我在点击loadActive链接时尝试禁用这些单选按钮,但由于某种原因,它只会禁用顺序中的第一个,然后跳过其余部分。
<form id="chatTickets" method="post" action="/admin/index.cfm/">
<input id="ticketID1" type="radio" checked="checked" value="myvalue1" name="ticketID"/>
<input id="ticketID2" type="radio" checked="checked" value="myvalue2" name="ticketID"/>
</form>
<a href="#" title="Load ActiveChat" id="loadActive">Load Active</a>
这是我正在使用的jquery:
jQuery("#loadActive").click(function() {
//I have other code in here that runs before this function call
writeData();
});
function writeData() {
jQuery("input[name='ticketID']").each(function(i) {
jQuery(this).attr('disabled', 'disabled');
});
}
答案 0 :(得分:46)
我已经重构了一下你的代码,这应该可行:
jQuery("#loadActive").click(writeData);
function writeData() {
jQuery("#chatTickets input:radio").attr('disabled',true);
}
如果表单上有两个以上的单选按钮,则必须修改选择器,例如,您可以使用starts with attribute filter选择ID以ticketID
开头的无线电:
function writeData() {
jQuery("#chatTickets input[id^=ticketID]:radio").attr('disabled',true);
}
答案 1 :(得分:41)
删除“每个”并使用:
$('input[name=ticketID]').attr("disabled",true);
那很简单。它的工作原理
答案 2 :(得分:9)
首先,有效语法是
jQuery("input[name=ticketID]")
第二,你试过了吗?
jQuery(":radio")
代替?
第三, 为什么不为所有单选按钮分配一个类,并按类选择它们?
答案 3 :(得分:5)
只需使用jQuery prop
$(".radio-button").prop("disabled", false);
$(".radio-button").prop("disabled", true); // disable
答案 4 :(得分:3)
我刚用你的代码构建了一个沙箱环境,它对我有用。这是我使用的:
<html>
<head>
<title>test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>
<body>
<form id="chatTickets" method="post" action="/admin/index.cfm/">
<input id="ticketID1" type="radio" checked="checked" value="myvalue1" name="ticketID"/>
<input id="ticketID2" type="radio" checked="checked" value="myvalue2" name="ticketID"/>
</form>
<a href="#" title="Load ActiveChat" id="loadActive">Load Active</a>
<script>
jQuery("#loadActive").click(function() {
//I have other code in here that runs before this function call
writeData();
});
function writeData() {
jQuery("input[name='ticketID']").each(function(i) {
jQuery(this).attr('disabled', 'disabled');
});
}
</script>
</body>
</html>
我在FF3.5中测试过,现在转移到IE8。它在IE8中也可以正常工作。您使用的浏览器是什么?
答案 5 :(得分:2)
代码:
function writeData() {
jQuery("#chatTickets input:radio[id^=ticketID]:first").attr('disabled', true);
return false;
}
另请参阅:Selector/radio,Selector/attributeStartsWith,Selector/first
答案 6 :(得分:1)
您应该使用类来使其更简单,而不是使用属性名称或任何其他jQuery选择器。
答案 7 :(得分:0)
您可以尝试使用此代码。
var radioBtn = $('<input type="radio" name="ticketID1" value="myvalue1">');
if('some condition'){
$(radioBtn).attr('disabled', true); // Disable the radio button.
$('.span_class').css('opacity', '.2'); // Set opacity to .2 to mute the text in front of the radio button.
}else{
$(radioBtn).attr('disabled', false);
$('.span_class').css('opacity', '1');
}