Html checkBox onchange funktioniert nicht
<input class="jProblemClass" id="Checkbox{%= ID %}" type="checkbox" onchange="problemPicker.onChangeProblemCheckBox('{%=ID %}');"/>
Nach dem ersten aktivieren bzw. zu deaktivieren, passiert nichts. Afetr zweite klicken, rufen Sie die Funktion problemPicker.onChangeProblemCheckBox
, aber ich bekomme ID-ersten check. Warum? Kann mir helfen jemand?
onChangeProblemCheckBox: function(id) {
if ($('#CheckBox' + id).attr("checked") == true) {
problemPicker.addToCheckProblems(id);
var checkboxes = $('.jProblemClass:checked');
if ((checkboxes.length > general.limit) && (general.limit != 0)) {
alert('The limit of ' + general.limit + ' problems exceeded. Please deselect ' + (checkboxes.length - general.limit).toString() + '.');
}
} else {
problemPicker.delFromCheckProblems(id);
}
},
- Möchten Sie vielleicht, um uns zu zeigen, was die Funktion tut - vielleicht ist das problem da...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bro verwenden, Ereignis onclick statt onchange..
Grund...
Nach der Javascript-Referenzen, die ich gelesen habe, onchange wird ausgelöst, nachdem die
der Fokus verloren geht. Es sei denn, Sie klicken irgendwo anders, der Fokus nicht verloren geht, DH.
Die anderen Browser müssen Sie nicht darauf warten, dass der Fokus verloren vor
brennen onchange - was schlagen Sie nicht nach den spec richtig
(trotz es macht mehr Sinn, um das Feuer an diesem Punkt). Wie wäre es mit
onclick und onkeydown/onkeyup statt (indem Sie sowohl die onclick-und
onkeyup/onkeydown Sie decken sowohl Maus-und Tastatur-Einstellung der
checkbox).
REFERENZ : http://www.winvistatips.com/re-onchange-event-checkbox-not-working-properly-t311364.html
Ich denke, das problem geht von hier aus:
$('#CheckBox' + id).attr("checked") == true
. Entsprechend zu den HTML-Spezifikationenchecked
sollte"checked"
wenn das event feuert. Also, versuchen Sie mit so etwas wie$('#CheckBox' + id).attr("checked") == "checked"
oder sogar$('#CheckBox' + id).attr("checked")
.Als eine zweite option, die ich empfehle Sie mit reinem jquery führen Sie Ihre routine. Zum Beispiel, wenn Sie
<input type="checkbox" id="ac">
Kontrollkästchen, die Sie verwenden können, dieses jq-code, um Ihre Routinen:Diesem Fall gezeigt, in diese demo.
onchange
aufonclick
alle sind arbeiten. Aber wenn ich onchange nichts arbeiten.$('#CheckBox' + id).attr("checked") == true
ist der richtige code.$('#CheckBox' + id).attr("checked") == "checked"
funktionierte nicht für mich.$('#CheckBox' + id).attr('checked') != null
. Ich erkannte, dass dies nicht-so-lange-her =)Versuchen Sie es mit
if($('#CheckBox' + id + ':checked').length > 0)
statt, so dass Sie led-jQuery herausfinden, es wird die checkbox geprüft oder nicht.Auch wenn die
onChangeProblemCheckBox
verwendet keine internen Eigenschaften inproblemPicker
aber nicht das referens Sie mit dem vollständigen Pfad, dhproblemPicker.nnnnn
es wird scheitern, wie das Ereignis ausgelöst wird, in den Kontext des Elements, nicht problemPicker. Es wäre so, als wenn die Funktion aufgerufen wurde, wie dies$('#CheckBox' + id).onChangeProblemCheckBox()
.