Imam nakupovalno košarico, ki prikazuje možnosti izdelka v spustnem meniju in če izberejo "yes", želim narediti nekatera druga polja na strani vidna.
Težava je v tem, da nakupovalna košarica v besedilo vključuje tudi modifikator cene, ki je lahko za vsak izdelek drugačen. Naslednja koda deluje:
$(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();
}
});
});
Vendar bi raje uporabil nekaj takega, kar pa ne deluje:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Ukrep želim izvesti le, če izbrana možnost vsebuje besedo "Yes", modifikatorja cene pa ne bi upošteval.
Kot je ta:
if (str.indexOf("Yes") >= 0)
...ali pa uporabite operator tilde:
if (~str.indexOf("Yes"))
To deluje, ker indexOf()
vrne -1
, če niza sploh nismo našli.
Upoštevajte, da se pri tem razlikujejo velike in male črke.
Če želite iskanje brez upoštevanja velikih in malih črk, lahko napišete
if (str.toLowerCase().indexOf("yes") >= 0)
Ali,
if (/yes/i.test(str))
Druga možnost:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
Preizkušeno v brskalnikih Firefox, Safari 6 in Chrome 36