Подтвердить что ты не робот

Отключение радиокнопок с помощью jQuery

Я пытаюсь отключить эти переключатели, когда нажимается ссылка 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');
});
}
4b9b3361

Ответ 1

Я немного переработал ваш код, это должно сработать:

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

function writeData() {
    jQuery("#chatTickets input:radio").attr('disabled',true);
}

Если в вашей форме больше двух переключателей, вам нужно будет изменить селектор, например, вы можете использовать начинается с фильтра атрибутов, чтобы выбрать радиостанции, чей идентификатор начинается с ticketID:

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

Ответ 2

Удалите "каждый" и просто используйте:

$('input[name=ticketID]').attr("disabled",true);

Это просто. Он работает

Ответ 3

Во-первых, допустимый синтаксис

jQuery("input[name=ticketID]")

второй, вы пробовали:

jQuery(":radio")

вместо

третий, почему бы не назначить класс всем переключателям и выбрать их по классу?

Ответ 4

Я только что создал среду с песочницей с вашим кодом, и это сработало для меня. Вот что я использовал:

<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. Какой браузер вы используете?

Ответ 6

просто используйте jQuery prop

 $(".radio-button").prop("disabled", false);
 $(".radio-button").prop("disabled", true); // disable

Ответ 7

Вы должны использовать классы, чтобы сделать его более простым, вместо имени атрибута или любого другого селектора jQuery.