Mam koszyk na zakupy, który wyświetla opcje produktów w menu rozwijanym i jeśli wybiorą "tak", chcę, aby niektóre inne pola na stronie były widoczne.
Problem polega na tym, że koszyk zawiera również modyfikator ceny w tekście, który może być inny dla każdego produktu. Poniższy kod działa:
$(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();
}
});
});
Jednak wolałbym użyć czegoś takiego, co nie działa:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Chcę wykonać akcję tylko wtedy, gdy wybrana opcja zawiera słowo "Tak", i zignorowałbym modyfikator ceny.
Na przykład to:
if (str.indexOf("Yes") >= 0)
...lub możesz użyć operatora tyldy:
if (~str.indexOf("Yes"))
To działa, ponieważ indexOf()
zwraca -1
, jeśli łańcuch nie został'znaleziony w ogóle.
Zauważ, że w tym przypadku rozróżniana jest wielkość liter.
Jeśli chcesz, aby wyszukiwanie nie uwzględniało wielkości liter, możesz napisać
if (str.toLowerCase().indexOf("yes") >= 0)
Lub,
if (/yes/i.test(str))
Inny sposób:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
Testowane na Firefox, Safari 6 i Chrome 36 .