Mul on ostukorv, mis kuvab toote valikuid rippmenüüs ja kui nad valivad "jah", tahan teha mõned muud väljad lehel nähtavaks.
Probleem on selles, et ostukorvis on tekstis ka hinnamuudatus, mis võib olla iga toote puhul erinev. Järgnev kood töötab:
$(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();
}
});
});
Kuid ma kasutaksin pigem midagi sellist, mis ei'tööta:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Ma tahan teostada toimingut ainult siis, kui valitud valik sisaldab sõna "Jah", ja ignoreeriksin hinnamoodustajat.
Nagu see:
if (str.indexOf("Yes") >= 0)
...või võite kasutada tilde-operaatorit:
if (~str.indexOf("Yes"))
See töötab, sest indexOf()
tagastab -1
, kui stringi ei leitud üldse.
Pange tähele, et see on suur- ja väiketähtedest sõltuv.
Kui soovite suur- ja väiketähelepanuta otsingut, võite kirjutada
if (str.toLowerCase().indexOf("yes") >= 0)
Või,
if (/yes/i.test(str))
Teine võimalus:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
Testitud Firefoxi, Safari 6 ja Chrome 36 peal