Html checkBox onchange funktioniert nicht

7
%Vor%

Nach der ersten Überprüfung oder Deaktivierung passiert nichts. Nach einem zweiten Klick, rufen Sie meine Funktion problemPicker.onChangeProblemCheckBox auf, aber ich bekomme zuerst eine ID. Warum? Kann mir jemand helfen?

%Vor%     
isxaker 09.02.2011, 07:46
quelle

3 Antworten

19

Bro verwendet onclick event statt onchange .. Grund... Laut den Javascript - Referenzen, die ich gelesen habe, wird onchange nach dem Fokus ist verloren. Wenn Sie nicht irgendwo anders klicken, geht der Fokus im IE nicht verloren. Die anderen Browser dürfen nicht darauf warten, dass der Fokus verloren geht fire onchange - was darauf hindeutet, dass sie der Spezifikation nicht korrekt folgen (obwohl es sinnvoller ist, an diesem Punkt zu feuern). Wie wäre es mit der Verwendung? onclick und onkeydown / onkeyup stattdessen (mit onclick und onkeyup / onkeydown decken Sie sowohl die Maus - als auch die Tastatureinstellung des Kontrollkästchen). REFERENZ: Ссылка

    
Tami 25.06.2011, 07:09
quelle
0

Versuchen Sie stattdessen, if($('#CheckBox' + id + ':checked').length > 0) zu verwenden, so dass Sie jQuery geführt haben, indem Sie das Kontrollkästchen angekreuzt haben oder nicht.

Auch wenn die onChangeProblemCheckBox interne Eigenschaften in problemPicker verwendet, sie aber nicht mit dem vollständigen Pfad referenziert, dh problemPicker.nnnnn , wird es fehlschlagen, da das Ereignis im Kontext des Elements ausgelöst wird, nicht problemePicker. Es wäre so, als ob die Funktion wie folgt aufgerufen würde $('#CheckBox' + id).onChangeProblemCheckBox() .

    
David Mårtensson 09.02.2011 08:09
quelle
0

Ich denke, das Problem geht von hier aus: $('#CheckBox' + id).attr("checked") == true . Entsprechend den HTML-Spezifikationen sollte checked auf "checked" gesetzt werden, wenn dieses Ereignis ausgelöst wird. Versuchen Sie also, etwas wie $('#CheckBox' + id).attr("checked") == "checked" oder sogar $('#CheckBox' + id).attr("checked") zu verwenden.

Als zweite Option empfehle ich Ihnen, pure jquery zu verwenden, um Ihre Routine auszuführen. Wenn Sie beispielsweise das Kontrollkästchen <input type="checkbox" id="ac"> haben, können Sie diesen jq-Code verwenden, um Ihre Routinen zu bearbeiten:

%Vor%

Dieser Fall wird in dieser Demo angezeigt.

    
shybovycha 09.02.2011 08:04
quelle

Tags und Links