ショッピングカートで、商品の選択肢をドロップダウンメニューで表示し、ユーザーが"yes"を選択した場合に、ページ上の他のフィールドを表示させたいと考えています。
問題は、ショッピングカートのテキストに価格修飾子が含まれていることで、これは商品ごとに異なる場合があります。以下のコードで動作します。
$(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();
}
});
});
しかし、私は次のようなものを使いたいのですが、これではうまくいきません。
$(document).ready(function() {
$('select[id="Engraving"]').change(function() {
var str = $('select[id="Engraving"] option:selected').text();
if (str *= "Yes") {
$('.engraving').show();
} else {
$('.engraving').hide();
}
});
});
選択されたオプションに"Yes"という単語が含まれている場合にのみアクションを実行し、priceモディファイアは無視したいのです。
こんな感じで。
if (str.indexOf("Yes") >= 0)
...または、チルダ演算子を使うこともできます。
if (~str.indexOf("Yes"))
これは、indexOf()
が、文字列がまったく見つからなかった場合に-1
を返すので、うまくいきます。
大文字小文字を区別することに注意してください。
大文字小文字を区別せずに検索したい場合は、次のように書きます。
if (str.toLowerCase().indexOf("yes") >= 0)
あるいは
if (/yes/i.test(str))
別の方法です。
var testStr = "This is a test";
if(testStr.contains("test")){
alert("String Found");
}
Firefox、Safari 6、Chrome 36でテスト済み。