드롭다운 메뉴에 제품 옵션을 표시하는 장바구니가 있는데, “예”를 선택하면 페이지의 다른 필드를 표시하도록 하겠습니다.
문제는 장바구니에도 가격변동자가 텍스트에 포함되어 있어 제품마다 다를 수 있다는 것입니다.다음 코드가 작동합니다.
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str == "Yes (+ $6.95)") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
}); });
다만, 다음과 같은 것을 사용하는 것이 좋습니다.이러한 방법은 동작하지 않습니다.
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
}); });
선택한 옵션에 “예”라는 단어가 포함되어 있고 가격 수식자를 무시하는 경우에만 작업을 수행합니다.
질문에 대한 답변
다음과 같이 합니다.
if (str.indexOf("Yes") >= 0)
…또는 tilde 연산자를 사용할 수 있습니다.
if (~str.indexOf("Yes"))
이것은, 다음과 같은 이유로 동작합니다.indexOf()
돌아온다-1
만약 그 끈이 전혀 발견되지 않았다면요.
이것은 대소문자를 구분합니다.
대소문자를 구분하지 않는 검색을 원하는 경우,
if (str.toLowerCase().indexOf("yes") >= 0)
또는 다음 중 하나를 선택합니다.
if (/yes/i.test(str))
후자는 정규 표현 또는 정규 표현입니다.
정규식 분석:
/
이것이 정규식임을 나타냅니다.yes
정규식이 정확한 순서로 정확한 문자를 찾는다는 것을 의미합니다./
정규식을 종료하다i
regex 를 대소문자를 구분하지 않고 설정합니다..test(str)
정규 표현과 일치하는지 여부를 판별합니다.str
요약하자면, 글자를 찾을 수 있는지 확인한다는 뜻이다.y
,e
,그리고.s
정확한 순서로, 대소문자를 반복하여, 변수에서str
str.search( 'Yes' )
일치하는 위치를 반환합니다. 찾을 수 없는 경우 -1을 반환합니다.
이 답을 쓰기에는 다소 늦었지만, 어쨌든 나는 그것을 포함하려고 생각했다. String.prototype
이제 방법이 있다includes
서브스트링을 체크할 수 있습니다.이 메서드는 대소문자를 구분합니다.
var str = 'It was a good date'; console.log(str.includes('good')); // shows true console.log(str.includes('Good')); // shows false
서브스트링을 확인하려면 다음 방법을 사용합니다.
if (mainString.toLowerCase().includes(substringToCheck.toLowerCase())) {
// mainString contains substringToCheck }
상세한 것에 대하여는, 메뉴얼을 참조해 주세요.
다른 방법:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found"); }
** Firefox, Safari 6, Chrome 36에서 테스트 완료 **
ECMAScript 6 에서는, 이전에 이름이 붙여져 있던 것이 도입되고 있습니다.contains
.
다음과 같이 사용할 수 있습니다.
'foobar'.includes('foo'); // true 'foobar'.includes('baz'); // false
또, 검색을 개시하는 위치를 지정하는 옵션의 second 인수도 받아들입니다.
'foobar'.includes('foo', 1); // false 'foobar'.includes('bar', 1); // true
오래된 브라우저에서 작동하도록 폴리필링할 수 있습니다.