使用JQuery选择单选按钮时出现问题

时间:2009-08-04 15:16:41

标签: jquery

我遇到以下代码问题。以下是我的javascript

<script type="text/javascript"><!--
function toggleTB(val, targetTB) {
    var b = 'disabled';
    if (val == '1') b = '';
    $('#' + targetTB).attr('disabled', b);
}

我的HTML -

    <input id="obp17" name="obp17" onclick="toggleTB('0', 'obp4a');" type="checkbox"/>Corner 
<input id="obp4a" name="obp4a" type="radio" value="17" />Facing Down
<input id="obp4a" name="obp4a" type="radio" value="18" />Facing Up

我想要发生的是,当用户点击复选框时,两个单选按钮都被禁用。发生的事情是只有第一个单选按钮被禁用。我是jquery选择器的新手,有人能告诉我正确的语法。

提前致谢

5 个答案:

答案 0 :(得分:0)

您希望为要禁用的每个输入提供不同的ID,然后相应地设置这些ID。

答案 1 :(得分:0)

你应该为无线电使用唯一的ID,或者根本不使用,或者更简单地给它们一个类,例如:

<input id="obp4a" name="obp4a" class="radio" type="radio" value="17" />Facing Down
<input id="obp4b" name="obp4a" class="radio" type="radio" value="18" />Facing Up

在你的JS中:

$('.radio').attr('disabled', true);

答案 2 :(得分:0)

您想要为您的元素提供唯一ID。然后为了简化jQuery选择,还给它们一个类class =“corner_radio”。

然后你的jquery代码变成:

function toggleTB(val, targetTB) {
   var b = 'disabled';
   if (val == '1') b = '';
   $('.corner_radio').attr('disabled', b);
}

答案 3 :(得分:0)

您可能希望使用jQuery不引人注意地添加单击处理程序,您可以使用jQuery的attr("checked")来查找是否选中了复选框。更像是这样:

var toggleTB = function(el, radioName) {
    $("input:radio[name=" + radioName + "]").attr("disabled", $(el).attr("checked"));
}
$(function() {
    $("#obp17").click(function(e) { toggleTB(e.target, "obp4a"); });
});

我还清理了一下HTML,添加了一些标签(这样你就可以点击与表单元素相关联的单词)并删除无效位:

<label><input id="obp17" name="obp17" type="checkbox" />Corner</label>
<label><input name="obp4a" type="radio" value="17" />Facing Down</label>
<label><input name="obp4a" type="radio" value="18" />Facing Up</label>

答案 4 :(得分:0)

您可以对b变量使用true / false。

 var b = true; //false