确定是否使用jQuery检查单选按钮

时间:2011-08-01 12:25:23

标签: javascript jquery

我有下表:

<table id="tableID">
    <tr id="rowID">     
        <td class="qCol">     
          <select name="select1">
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          </select>
        </td>      
        <td class="qCo2">     
        <!-- img here -->     
        <input type="text" name="text1" id="text1" />
        </td>      
        <td class="qCo3">     
          <select name="select2">
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          </select>   
        </td>      
        <td class="qCo4">     
        <!-- radio buttons here -->   
           <input type='radio' name='name' value='1'>  
           <input type='radio' name='name' value='2'>
           <input type='radio' name='name' value='3'>
        </td>      
        <td class="qCo5">     
         <select name="select3">
          <option value="1">1</option>
          <option value="2">2</option>
          <option value="3">3</option>
                    </select>   
        </td>     
        <td class="qCo6">     
        <!-- hidden validation image here -->     
        </td> 
    <tr> 
</table>

我有以下jQuery

$("#rowID input[type=text]").blur(function () {

    if ($(this).children("input:radio").is(':checked')) {
        alert("yes");
    } else {
        alert("no");
    }

});

然而无论是否选择了其中一个单选按钮,我仍然会收到警告“否”。现在我知道我可以看到单选按钮组的名称但在某些情况下我将无法使用GUID - 从文本框的onblur事件开始,通过dom的最佳方法或方法是什么行以确定是否选中了其中一​​个单选按钮。

3 个答案:

答案 0 :(得分:2)

您的问题是因为$(this)指的是文本框而不是rowID。

要解决此问题:

$("#rowID input[type=text]").blur(function () {

    var checkedRadios = $('#rowID').find('input:radio:checked');

    if (checkedRadios.length > 0) {
        alert("yes");
    } else {
        alert("no");
    }

});

答案 1 :(得分:0)

您正在使用文本框选择器并绑定到其模糊事件,并且在该事件处理程序中,$(this)指的是文本框本身。由于您没有文本框的任何子项,因此它永远不会找到任何单选按钮。

答案 2 :(得分:0)

$("#rowID input[type=text]").blur(function () { //ect...
函数内的

$(this)将引用您的文本输入。

你需要选择type = radio。