Jeg har en indkøbskurv, der viser produktmuligheder i en dropdown-menu, og hvis de vælger "ja", vil jeg gerne gøre nogle andre felter på siden synlige.
Problemet er, at indkøbskurven også indeholder prismodifikatoren i teksten, som kan være forskellig for hvert produkt. Følgende kode virker:
$(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();
}
});
});
Jeg vil dog hellere bruge noget som dette, hvilket ikke virker:
$(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 ønsker kun at udføre handlingen, hvis den valgte indstilling indeholder ordet "Ja", og vil ignorere prismodifikatoren.
Som denne:
if (str.indexOf("Yes") >= 0)
...eller du kan bruge tilde-operatoren:
if (~str.indexOf("Yes"))
Dette virker, fordi indexOf()
returnerer -1
, hvis strengen slet ikke blev fundet.
Bemærk, at dette er case-sensitiv.
Hvis du vil have en søgning uden hensyn til store og små bogstaver, kan du skrive
if (str.toLowerCase().indexOf("yes") >= 0)
Eller,
if (/yes/i.test(str))
En anden måde:
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
Testet på Firefox, Safari 6 og Chrome 36