ドロップダウン メニューに製品オプションを表示するショッピング カートがあり、「はい」を選択した場合に、ページ上の他のフィールドも表示されるようにしたいと考えています。
問題は、ショッピング カートのテキストに価格修飾子も含まれており、これが製品ごとに異なる可能性があることです。次のコードは機能します。
$(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();
}
});
});
選択したオプションに「はい」という単語が含まれている場合にのみアクションを実行し、価格修飾子は無視します。
ベストアンサー1
このような:
if (str.indexOf("Yes") >= 0)
...または、チルダ演算子を使用することもできます。
if (~str.indexOf("Yes"))
文字列がまったく見つからなかった場合にindexOf()
が返されるため、これは機能します。-1
これは大文字と小文字を区別することに注意してください。
大文字と小文字を区別しない検索をしたい場合は、次のように記述します。
if (str.toLowerCase().indexOf("yes") >= 0)
または:
if (/yes/i.test(str))
後者は正規表現またはregexです。
正規表現の内訳:
/
これは正規表現であることを示すyes
正規表現は、その文字を正確にその順序で検索することを意味します。/
正規表現を終了しますi
正規表現を大文字と小文字を区別するように設定する.test(str)
正規表現が一致するかどうかを判定します。str
要約すると、変数内で大文字と小文字を区別せずに、文字y
、、e
をその正確な順序で見つけられるかどうかを確認します。s
str