Как снять отметку с радио кнопки - PullRequest
16 голосов
/ 07 апреля 2010

У меня есть две формы, одна с переключателем, который пользователи должны выбрать для редактирования.

[form name="A"]
<li>[input type="radio" name="BookItem" value="1" /]</li>
<li>[input type="radio" name="BookItem" value="2" /]</li>
<li>[input type="radio" name="BookItem" value="3" /]</li>
[form]<p>

После выбора «BookItem» из формы (A) я вызываю функцию $("#EditFormWrapper").load("callEditData.cfm? ID="+ID); для загрузки второй формы (B)

<div id="EditFormWrapper"><div></p>
<!---//  begin dynamic form generated by external file callEditData.cfm  //--->
[form id="editForm" name="B"]
<ul class="hourswrapper">
<li><input type="checkbox" id="TOR2Hours" class="TOR2Hours" name="TOR2Hours" value="AM2Hrs1" /> 2 Hours AM</li>
 <li><input type="checkbox" id="TOR2Hours" class="TOR2Hours" name="TOR2Hours" value="PM2Hrs1" /> 2 Hours PM</li>
<li><input type="checkbox" id="TOR2Hours" class="TOR2Hours" name="TOR2Hours" value="AM2Hrs2" /> 2 Hours AM</li>
 <li><input type="checkbox" id="TOR2Hours" class="TOR2Hours" name="TOR2Hours" value="PM2Hrs2" /> 2 Hours PM</li>
</ul>
[input type="image" src="images/submit-btn.gif" id="addBTN" name="addBTN" class="buttons" alt="SubmitRrequest" /]
[input type="image" src="images/cancel-btn.gif" id="editBTNcancel" name="editBTNcancel" class="buttons" alt="Cancel Request" /]
[/form]
<!---//  end dynamic form from external file //--->

Я хочу снять отметку с переключателя в форме (A), когда пользователь нажимает кнопку отмены (editBTNcancel) в форме (B).

Вот мой сценарий:

$("#editBTNcancel").live("click", function(event){
    event.preventDefault();
    $("#EditFormWrapper").slideUp("fast").empty();
    //$('.TOR2Hours').removeAttr('checked');
    $('.TOR2Hours').attr('checked', false);
});

Надеюсь, я четко изложу свою проблему, любое предложение будет с благодарностью!

Ответы [ 6 ]

10 голосов
/ 14 июня 2012

вы можете получить доступ к форме, например, так ...

var exampleForm = document.forms['form_name'];

, затем цикл по форме

for( var i=0; i<exampleForm.length; i++ ){
   alert( exampleForm[i].type );
}

, который вы можете проверить, чтобы проверить, как так ...

if( exampleForm[i].checked ) 

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

exampleForm[i].checked=false;

окончательный код будет выглядеть следующим образом ...

var exampleForm = document.forms['form_name'];
for( var i=0; i<exampleForm.length; i++ ){
   if( exampleForm[i].type ) == 'radio' && exampleForm[i].checked == true ){
       exampleForm[i].checked = false;
   }
}
7 голосов
/ 07 апреля 2010

Я не совсем уверен, что вы хотите, но вы можете попробовать использовать вход сброса.

<input type='reset' />
3 голосов
/ 07 апреля 2010

Поскольку это довольно простая задача DOM, которая существует и работает в любом браузере с поддержкой скриптов, я предлагаю не использовать для этого методы jQuery:

$(".TOR2Hours")[0].checked = false;

Другая вещь, которая возникает у меня, это то, правильный ли ваш селектор. Вы хотели выбрать набор элементов по классу или это должен быть селектор идентификаторов?

1 голос
/ 02 октября 2014

Ваш селектор просто неверен. Если вы хотите снять отметку с переключателя в первой форме, вы должны использовать $('input[name="BookItem"]'), а не $('.TOR2Hours'):

$("#editBTNcancel").on("click", function(event){ $("#EditFormWrapper").slideUp("fast").empty(); $('input[name="BookItem"]').attr('checked', false); });

Что касается того, какой метод использовать для снятия отметки с переключателей, должны работать все следующие 3 метода:

  1. $('input[name="BookItem"]').attr('checked', false);
  2. $('input[name="BookItem"]').removeAttr('checked');
  3. $('input[name="BookItem"]').prop('checked', false);

Однако, посмотрите документы jQuery на jQuery prop () , чтобы узнать разницу между attr() и prop().

0 голосов
/ 25 декабря 2012

Я использую этот способ для решения вашей проблемы в ASP.net, проверьте это ..

radioButton.InputAttributes["show"] = "false"; 
string clickJs = " if(this.show =='true'){this.show ='false'; this.checked = false;}else{this.show='true'; this.checked = true;};";  

radioButton.Attributes["onClick"] = clickJs; 

В asp.net вы можете использовать этот способ для добавления атрибута. И вы также можете добавить атрибут в radioButton вручную и выполнить функцию (clickJs) для изменения атрибутов ckecked !!!

0 голосов
/ 09 февраля 2012

Я только что нашел отличное решение этой проблемы.

Предполагая, что у вас есть две рации, которые необходимо проверить / снять, внедрите этот код и измените то, что необходимо:

var gift_click = 0;
    function HandleGiftClick() {
        if (document.getElementById('LeftPanelContent_giftDeed2').checked == true) {
            gift_click++;
            memorial_click = 0;
        }
        if (gift_click % 2 == 0) {document.getElementById('LeftPanelContent_giftDeed2').checked = false; }
    }
    var memorial_click = 0;
    function HandleMemorialClick() {          
        if (document.getElementById('LeftPanelContent_memorialDeed2').checked == true) {
            memorial_click++;
            gift_click = 0;
        }
        if (memorial_click % 2 == 0) { document.getElementById('LeftPanelContent_memorialDeed2').checked = false; }
    }

:) Добро пожаловать

...