Jag har en kundvagn som visar produktalternativ i en rullgardinsmeny och om de väljer "ja" vill jag göra några andra fält på sidan synliga.
Problemet är att kundvagnen också innehåller prismodifieringen i texten, som kan vara olika för varje produkt. Följande kod fungerar:
$(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();
}
});
});
Jag skulle dock hellre använda något som detta, vilket inte fungerar:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Jag vill bara utföra åtgärden om det valda alternativet innehåller ordet "Yes", och jag vill ignorera prismodifieringen.
Så här:
if (str.indexOf("Yes") >= 0)
...eller så kan du använda tilde-operatorn:
if (~str.indexOf("Yes"))
Detta fungerar eftersom indexOf()
returnerar -1
om strängen inte alls hittades.
Observera att detta är skiftlägeskänsligt.
Om du vill ha en sökning som inte tar hänsyn till storleken kan du skriva
if (str.toLowerCase().indexOf("yes") >= 0)
Eller,
if (/yes/i.test(str))
Ett annat sätt:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
Testad på Firefox, Safari 6 och Chrome 36