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 du onclick="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'));
InformationsquelleAutor Ra Tre | 2015-02-06
Schreibe einen Kommentar