Comment appeler une fonction à partir de la case onclick ou onchange
J'ai un formulaire dans lequel je veux désactiver ou masquer des deux champs de saisie en sélectionnant une case à cocher. Je peux facilement le faire quand sur le document.prêt, mais depuis que je suis en ajoutant les champs de la fonction ne prend pas effet. Comment dois-je appeler la fonction avec onClick?
Voici mon code de travail
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" />
Et c'est ce que je suis en train de faire:
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---------------
Permettez-moi de redéfinir: Mon code est à l'aide .ajouter pour créer plusieurs instances du code ci-dessus. Puisque la quantité de append est illimité, je suis incapable de définir la case avec $('#id')
, car il peut y avoir des centaines d'entre eux comme $('#id1')
, $('#id2')
.. etc. J'ai besoin d'une fonction qui évite de mentionner l'exacte id de l'élément, est appelé onClick par le case et affectant beforehead div, qui est aussi ajouté.
- Je suis assez confus sur ce que vous essayez de faire ici, le var
appTimes
n'est pas défini... peut-être vous direonclick="boxdisable('.appTimes');"
? - pas besoin de si/d'autre, vous utilisez prop pour définir et unset désactivé, pas attr/removeAttr, qui prend une valeur de type boolean
$(e).find('input').prop('disabled', $something.is(':checked'));
Vous devez vous connecter pour publier un commentaire.
Il fonctionne 🙂
JS:
HTML:
$(this)
avec le onclick appel. Merciattr
etremoveAttr
pour cela, vous devez utiliserprop
.$(e).find('input').prop('disabled', t.is(':checked'));
append('$code')
ouappend("$code")
Si les éléments n'existent pas au moment de la doc prêt, utilisez
.on
, comme suit:jQuery .sur la documentation
De ne pas utiliser le
onclick
attribut. Ce que votre code est en train de faire est de connecter un nouveau gestionnaire onclick une fois que l'utilisateur clique. Ce n'est probablement pas ce que vous voulez.Vous devez également utiliser
prop
au lieu deattr
pour changerdisabled
.Depuis l'élément que vous souhaitez joindre votre événement peut ne pas exister sur le document de prêt, l'attacher à l'ancêtre le plus proche que vous êtes sûr qu'on y sera.
but since i am appending those fields the function does not take effect
-> c'est parce Que la case, cliquez sur l'événement n'est pas appelé à les ajouter.JS:
HTML: