jQuery do something when selected option text contains X
题
I want to do something when a option selected contains a certain word, however the below does not work:
<select id="coloroption">
<option value="172">Granite Gray</option>
<option value="174">Hot Red</option>
<option value="173">Navy</option>
<option value="171">Kentucky Green</option>
</select>
$('#coloroption').change(function() {
var message_index = $(this).val();
if (message_index.indexOf('Kentucky') >= 0){
alert('MINIMUM 12')}
});
解决方案
这是正确的工作代码:
$('#coloroption').change(function(e) {
var sel = $('#coloroption')[0];
var message_index = sel.options[sel.selectedIndex].text;
if (message_index.toLowerCase().indexOf('kentucky') >= 0){
alert('MINIMUM 12')
}
});
只是打电话
$('#coloroption').val()
实际上将为您提供选项的值,因此,如果您想使用该选项的价值,则必须与“ 171”相比,而不是文本值。
哦,这是 JSFIDDLE工作样本
其他提示
您可以尝试一下:
if (message_index.toLowerCase().indexOf('kentucky') >= 0){
JavaScript字符串对大小写,因此“肯塔基州”将不匹配“肯塔基州”。
完整的代码:)
<!DOCTYPE html>
<html>
<head>
<style>
div { color:red; }
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<select id="coloroption">
<option>Granite Gray</option>
<option>Hot Red</option>
<option>Navy</option>
<option>Kentucky Green</option>
</select>
<script>
$('#coloroption').change(function() {
var str = "";
$("select option:selected").each(function () {
str += $(this).text();
});
if (str.toLowerCase().indexOf('kentucky') >= 0){
alert('MINIMUM 12');
}
})
.trigger('change');
</script>
</body>
</html>
不隶属于 StackOverflow