2011-11-23 66 views
0

我嘗試執行下面的代碼:在我的JavaScript檢查單選按鈕的值與給定值

<input type="radio" name="yesno2" value="yes" style="outline:0;"/>Yes 
      <input type="radio" name="yesno2" value="no" style="margin-left:30px; outline:0;"/>No</div> 

<script> 
if ($("input[name='yesno2']").val() == "no") { 
    alert("ddd"); 
} 
    </script> 

如果我檢查不,應該告訴我警報窗口,但它沒有顯示。對不起,如果我只是向你展示部分代碼,任何人都可以告訴我我做錯了什麼,提前致謝!

回答

0
<input type="radio" name="yesno2" value="yes" style="outline:0;"/>Yes 
<input type="radio" name="yesno2" value="no" style="margin-left:30px; outline:0;"/>No</div> 
<br/><input type="button" id="btn1" value="GetRadioChecked"> 


$("#btn1").click(function(){ 

     if($("input[name=yesno2]:checked ").val()=="no") 
     { 
      alert("no clicked"); 
     } 
     else if($("input[name=yesno2]:checked").val()=="yes") 
     { 
      alert("yes checked "); 
     } 
     else   
     { 
      alert("nothing checked !") 
     } 

    }); 

示例撥弄工作樣品 http://jsfiddle.net/WxmpJ/

1

您需要綁定一個事件,如點擊或變化:

$("input[name='yesno2']").change(function() { 
    if ($(this).val() == "no") { 
    alert("ddd"); 
    } 
}); 

這樣做的原因很簡單:您最初的代碼會執行立刻就會有價值,當時的價值不會是「不」。你想在實際需要價值的地方拖延和評估代碼。這可能會發生變化,或者可能在您的流程的另一個步驟中,例如表單提交過程中。

1

一個基本問題是你使用的選擇器的形式總是會給你匹配的第一個輸入的值。您應該應用處理程序,然後在處理程序中使用this來查找實際生成事件的元素。您可以從該元素獲取值並檢查它。

<script type="text/javascript"> 
    $(function() { // apply handlers after document loads 
     $('[name="yesno2"]').change(function() { // apply a change handler to both inputs 
      if ($(this).val() == "no") {// get value from modified input, not first input 
       alert('ddd'); 
      } 
     }); 
    }); 
</script> 

我們用一個變化處理程序,而不是一個單擊處理的原因是無線電的值可基於點擊相關的標籤元素,假設你有它通過點擊設置正確,而不是隻單選按鈕。

參見在http://jsfiddle.net/Q7geW/