2011-12-05 117 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"); 
     } 
    });