使用jQuery禁用单选按钮

使用jQuery禁用单选按钮,jquery,Jquery,我试图在单击loadActive链接时禁用这些单选按钮,但由于某些原因,它只禁用顺序中的第一个,然后跳过其余的 <form id="chatTickets" method="post" action="/admin/index.cfm/"> <input id="ticketID1" type="radio" checked="checked" value="myvalue1" name="ticketID"/> <input id="ticketI

我试图在单击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("input[name=ticketID]")
第二,您是否尝试过:

jQuery(":radio")
相反

第三,,
为什么不给所有单选按钮分配一个类,并按类选择它们呢?

您应该使用类来使其更简单,而不是属性名或任何其他jQuery选择器。

我已经对代码进行了一些重构,这应该可以:

jQuery("#loadActive").click(writeData);

function writeData() {
    jQuery("#chatTickets input:radio").attr('disabled',true);
}
如果表单上有两个以上的单选按钮,则必须修改选择器,例如,可以使用来选择ID以ticketID开头的收音机:


我刚刚用你的代码构建了一个沙盒环境,它对我很有用。以下是我使用的:

<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中也可以正常工作。您使用的浏览器是什么?

代码:

function writeData() {
    jQuery("#chatTickets input:radio[id^=ticketID]:first").attr('disabled', true);
    return false;
}

另请参见:,

卸下您的每一个,只需使用:

$('input[name=ticketID]').attr("disabled",true);
那很简单。它可以工作

只需使用jQuery道具

你可以试试这个代码

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');
}

你有没有试过使用firebug,使用选择器来获取一个元素数组,看看数组中有多少元素?你那里的所有东西对我来说都很好。是的,它在我的沙盒中也可以工作,虽然它来自一个大得多的文件,但我认为其他一些东西使它无法工作。使用类,以不同的方式选择它仍然只会禁用第一个收音机,而不会禁用其余的。但在沙盒中,它工作得很好,然后它必须是你展示给我们的东西以外的东西。事实上我没有。你能详细说明一下吗?rails有用于复选框的数组符号。但是您可以有多个同名的两个项目,而不使用[]是的,您是对的。。。我完全忘记了那件事。要编辑文章。实际上输入[name='ticketID']是有效的语法,不需要单引号。为什么不直接使用名称呢?然后选择他们?它应该运作良好;我已经做了一百万次了。我同意mkoryak的观点:给所有单选按钮分配一个类,然后按类选择它们。然后你必须维护类名和名称,当名称足够时。我认为我们应该在进行优化之前解决他的问题。这将禁用该表单中的每个单选按钮。在他的问题中,可能只有两个,但可能会有更多。@geowa4-是的,我想那是他表格上唯一的收音机。在任何情况下,我都编辑了一些更有用的内容。+1用于删除无用的.each。attr仍将应用于所有选定元素。此代码已过时。使用下面KCOtzen的方法。非常确定这与OP想要的完全相反。
$('input[name=ticketID]').attr("disabled",true);
 $(".radio-button").prop("disabled", false);
 $(".radio-button").prop("disabled", true); // disable
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');
}