web-dev-qa-db-ger.com

So deaktivieren Sie das Optionsfeld "A"

Ich habe zwei Formulare, eines mit einem Optionsfeld, das Benutzer zum Bearbeiten auswählen müssen. 

[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>

Nachdem "BookItem" aus Formular (A) ausgewählt wurde, rufe ich die Funktion $("#EditFormWrapper").load("callEditData.cfm? ID="+ID); auf, um das zweite Formular (B) zu laden. 

<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 //--->

Ich möchte das Optionsfeld auf dem Formular (A) deaktivieren, wenn der Benutzer auf die Schaltfläche "Abbrechen" (editBTNcancel) im Formular (B) klickt. 

Hier ist mein Skript:

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

Ich hoffe, ich gebe mein Problem klar an, jeder Vorschlag wäre sehr dankbar! 

16
user281867

Ich bin mir nicht ganz sicher, was Sie wollen, aber Sie könnten einen Reset-Eingang verwenden.

<input type='reset' />
7
jeremysawesome

sie können das Formular gerne so aufrufen ... 

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

dann das Formular durchlaufen

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

sie können wie getestet testen ...

if( exampleForm[i].checked ) 

deaktivieren Sie das markierte Optionsfeld. Versuchen Sie ...

exampleForm[i].checked=false;

der endgültige Code würde so aussehen ...

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;
   }
}
10
brock

Da dies so ziemlich die einfachste DOM-Aufgabe ist, die es gibt und in jedem skriptfähigen Browser funktioniert, schlage ich vor, die jQuery-Methoden dafür nicht zu verwenden:

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

Die andere Sache, die mir einfällt, ist, ob Ihr Wähler richtig ist. Wollten Sie eine Gruppe von Elementen nach Klassen auswählen oder sollte es ein ID-Selektor sein?

3
Tim Down

Ihre Auswahl ist einfach falsch. Wenn Sie das Optionsfeld in der ersten Form deaktivieren möchten, sollten Sie $('input[name="BookItem"]') und nicht $('.TOR2Hours') verwenden:

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

In Bezug auf die Methode zum Deaktivieren von Optionsfeldern sollten die folgenden 3 Methoden funktionieren:

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

In den jQuery-Dokumenten zu jQuery prop () finden Sie jedoch Informationen zum Unterschied zwischen attr() und prop().

1
Joel Kornbluh

Ich benutze diesen Weg, um Ihr Problem in ASP.net zu lösen, überprüfen Sie dies ..

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; 

In asp.net kannst du auf diese Weise ein Attribut hinzufügen. Sie können dem radioButton auch manuell ein Attribut hinzufügen und die Funktion (clickJs) ausführen, um die überprüften Attribute zu ändern !!!

0
Jason SP Lin

Ich habe gerade eine großartige Lösung für dieses Problem gefunden.

Angenommen, Sie haben zwei Funkgeräte, die überprüft/deaktiviert werden müssen, implementieren Sie diesen Code und ändern Sie das Notwendige:

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

:) dein willkommen

0
Jacob Gaiski