So rufen Sie eine Funktion aus der checkbox onclick oder onchange
Ich habe ein Formular, in dem möchte ich deaktivieren oder verstecken sich zwei Eingabefelder durch Auswahl einer checkbox. Kann ich leicht tun, wenn Sie auf Dokument.fertig, aber da ich mich Anhängen dieser Felder ist die Funktion nicht wirksam. Wie rufe ich die Funktion mit onClick?
Hier mein funktionierenden code
JS:
$(function() {
$(checkbox).click(function() {
if ($('#checkbox').is(':checked')) {
$('#appTimes').find('input').attr('disabled', true);
} else {
$('#appTimes').find('input').removeAttr('disabled');
}
});
});
HTML:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="appTimes" id="appTimes">
<input name="stopTime1" type="text" id="stopTime1" />
<input name="stopTime12" type="text" id="stopTime12" />
</div>
<input name="checkbox" type="checkbox" id="checkbox" />
Und das ist, was ich versuche zu tun:
JS:
function boxDisable(e) {
$(this).click(function() {
if ($(this).is(':checked')) {
$(e).find('input').attr('disabled', true);
} else {
$(e).find('input').removeAttr('disabled');
}
});
}
HTML:
<div class="appTimes" id="appTimes">
<input name="stopTime1" type="text" id="stopTime1" />
<input name="stopTime12" type="text" id="stopTime12" />
</div>
<input name="checkbox" onclick="boxdisable(appTimes);" type="checkbox" id="checkbox" />
---EDIT---------------
Lassen Sie mich neu zu definieren: Mein code verwendet wird .append zu erstellen mehrere Instanzen der oben genannten code. Da die Menge von Anhängen ist unbegrenzt ich bin nicht in der Lage zu definieren, die checkbox mit $('#id')
, weil es möglicherweise Hunderte von Ihnen, wie $('#id1')
, $('#id2')
.. etc. Ich brauche eine Funktion, die verhindert, dass die Erwähnung der genauen element-id ' s, genannt onClick durch die checkbox und die vorkopf div, die auch angehängt.
- Ich bin ziemlich verwirrt über das, was Sie hier versuchen, die var
appTimes
ist nicht definiert... Vielleicht meinst duonclick="boxdisable('.appTimes');"
? - keine Notwendigkeit für if/else-Anweisung, die Sie verwenden prop zu setzen und "unset" deaktiviert, nicht attr/removeAttr, die einen booleschen
$(e).find('input').prop('disabled', $something.is(':checked'));
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es funktioniert 🙂
JS:
HTML:
$(this)
mit dem onclick-Aufruf. Dankeattr
undremoveAttr
für diese, sollten Sieprop
.$(e).find('input').prop('disabled', t.is(':checked'));
append('$code')
oderappend("$code")
Wenn die Elemente nicht vorhanden sind die zum Zeitpunkt der doc sich bereit, die Verwendung
.on
etwa so:jQuery .auf die Dokumentation
Nicht die
onclick
Attribut. Was Ihr code macht, ist das anbringen einer neuen onclick-handler nachdem der Benutzer klickt. Das ist wahrscheinlich nicht das, was Sie wollen.Sollten Sie auch
prop
stattattr
für die änderungdisabled
.Da das element, das Sie Anhängen möchten Ihre Veranstaltung nicht auf Dokument bereit, bringen Sie es zum nächsten Vorfahren, dass Sie sicher dort sein wird.
but since i am appending those fields the function does not take effect
-> das ist, weil die checkbox click-Ereignis nicht aufgerufen auf der append.JS:
HTML: