Jeg har en handlekurv som viser produktalternativer i en rullegardinmeny, og hvis de velger "ja", vil jeg gjøre noen andre felt på siden synlige.
Problemet er at handlekurven også inkluderer prismodifikatoren i teksten, som kan være forskjellig for hvert produkt. Følgende kode fungerer:
$(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();
}
});
});
Imidlertid vil jeg heller bruke noe som dette, som ikke fungerer:
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
Jeg vil bare utføre handlingen hvis det valgte alternativet inneholder ordet "Ja", og vil ignorere prismodifikatoren.
Sånn som dette:
if (str.indexOf("Yes") >= 0)
...eller du kan bruke tilde-operatoren:
if (~str.indexOf("Yes"))
Dette fungerer fordi indexOf()
returnerer -1
hvis strengen ikke ble funnet i det hele tatt.
Merk at dette er sensitivt for store og små bokstaver.
Hvis du vil ha et søk som ikke er sensitivt for store og små bokstaver, kan du skrive
if (str.toLowerCase().indexOf("yes") >= 0)
Eller,
if (/yes/i.test(str))
En annen måte:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
Testet på Firefox, Safari 6 og Chrome 36 .