2011-12-05 88 views
2

我试图根据火灾警报,它是由使用jQuery一个<select>元素选择的值:jQuery的选择更改事件

$("#optiontype").change(function() { 
     var option = $("#optiontype").val(); 
     if(option.Contains("Forward")){ 
      alert("forward selected"); 
     } 
    }); 

警报从未每当我选择从<select>元素“前进”触发。

+1

你有一个'.Contains'功能?它默认情况下不可用。 – pimvdb

回答

9

更改是正确的事件。问题是,在这种情况下包含不正确。包含用于DOM遍历。你需要在这里用的是只是一个正常的比较,像这样:

$("#optiontype").change(function() { 
    var option = $("#optiontype").val(); 
    if(option.toLowerCase() == "forward"){ 
     alert("forward"); 
    } 
}); 

或者,如果字符串可以包含的不仅仅是“前进”的更多资讯,请的indexOf:http://www.w3schools.com/jsref/jsref_indexof.asp

2

您应该使用option.indexOf("forward") != -1

+0

这有效......但是,选择的选项实际上是“前进”......为什么“前进”工作?当然,“他们是否真的愿意接受?” – brux

1
$("#optiontype").change(function() { 
     var option = $("#optiontype").val(); 
     if(option.toLowerCase()=="forward"){ 
      alert("forward selected"); 
     } 
    }); 

这就是如果你正在获取select元素的实际值,而不是文本。看到其中的差别:

<select id="optiontype" type="multiple"> 
<option value="forward">forwardtext</option> 
</select> 

如果你正在寻找的文本,然后用:

$("#optiontype").change(function() { 
     var option = $("#optiontype option:selected").text(); 
     if(option.toLowerCase()=="forwardtext"){ 
      alert("forward selected"); 
     } 
    });