我遇到以下代码问题。以下是我的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选择器的新手,有人能告诉我正确的语法。
提前致谢
答案 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