JQuery – Définir la valeur d'attribut

J'ai le HTML suivant avec deux éléments ayant le même nom

<input type="hidden" name= "chk0" value=""> <input type="checkbox" name="chk0" value="true" disabled> 

Par JQuery, je souhaite définir la case à cocher. Donc, j'utilise quelque chose comme ça:

 $('#chk0').attr("disabled",false); 

Mais cela ne fonctionne pas. Je suppose que JQuery se confond avec deux éléments ayant le même nom identique. Malheureusement, je ne peux pas éviter d'utiliser deux noms différents car, lorsque le formulaire est affiché, je souhaite que toutes les cases soient publiées (pas seulement celles qui sont vérifiées). Par conséquent, je dois utiliser un élément caché avec le même nom … Donc, revenons à la question, comment puis-je activer la case à cocher via JQuery dans le scénario ci-dessus? Existe-t-il un paramètre "type" pour attr que distingues caché à la case à cocher?

Merci

Quelques choses avant le code actuel …

Le hash (#) que vous utilisez comme sélecteur est pour les ID et non pour les noms d'éléments. Également l'attribut invalide n'est pas un véritable scénario faux … s'il a désactivé un attribut, cela signifie qu'il est vrai … il faut supprimer l'attribut et ne pas le configurer comme faux. Il y a également les sélecteurs de formulaire qui identifient des types spécifiques d'articles sous une forme …

Donc le code serait

 $("input:checkbox[name='chk0']").removeAttr('disabled'); 

Répondre à la réponse à jour

Vous devez utiliser la méthode .prop() ( ajoutée depuis v1.6 )

 $("input:checkbox[name='chk0']").prop('disabled', false); // to enable the checkbox 

et

 $("input:checkbox[name='chk0']").prop('disabled', true); // to disable the checkbox 

Sérieusement, n'utilisez pas jQuery pour cela. disabled est une propriété booléenne d'éléments de formulaire qui fonctionne parfaitement dans tous les principaux navigateurs depuis 1997, et il n'y a pas de moyen possible pour qu'il soit plus simple ou plus intuitif de modifier si un élément de formulaire est désactivé ou non.

La manière la plus simple d'obtenir une référence à la case à cocher serait de lui donner un id . Voici mon HTML suggéré:

 <input type="hidden" name="chk0" value=""> <input type="checkbox" name="chk0" id="chk0_checkbox" value="true" disabled> 

Et la ligne de JavaScript pour activer la case à cocher:

 document.getElementById("chk0_checkbox").disabled = false; 

Si vous préférez, vous pouvez plutôt utiliser jQuery pour saisir la case à cocher:

 $("#chk0_checkbox")[0].disabled = false; 

"True" et "False" ne fonctionnent pas, pour désactiver, mettre à valeur désactivée.

$('.someElement').attr('disabled', 'disabled');

Pour activer, supprimer.

$('.someElement').removeAttr('disabled');

De plus, ne vous inquiétez pas si plusieurs éléments sont sélectionnés, jQuery fonctionnera sur tous ceux qui correspondent. Si vous avez besoin d'un seul, vous pouvez utiliser plusieurs choses: premièrement: dernière, n, etc.

Vous utilisez le nom et non l'ID comme autre mention – rappelez-vous, si vous utilisez id xhtml valide exige que les identifiants soient uniques.

$ ("# Chk0") se réfère à un élément avec id chk0. Vous pouvez essayer d'ajouter des identifiants aux éléments. Les identifiants sont uniques même si les noms sont identiques, de sorte que jQuery vous permet d'accéder à un seul élément par son identifiant.

Utilisez une ID pour identifier de manière unique la case à cocher. Votre exemple actuel tente de sélectionner la case à cocher avec un identifiant de '# chk0':

<input type="checkbox" id="chk0" name="chk0" value="true" disabled>

$('#chk0').attr("disabled", "disabled");

Vous devrez également supprimer l'attribut disabled pour activer la case à cocher. Quelque chose comme:

$('#chk0').removeAttr("disabled");

Voir les documents pour removeAttr

La valeur XHTML pour désactiver / activer un élément de saisie est la suivante:

 <input type="checkbox" id="chk0" name="chk0" value="true" disabled="disabled" /> <input type="checkbox" id="chk0" name="chk0" value="true" /> 

Notez que c'est l' absence de l'attribut disabled qui rend l'élément de saisie activé.

Vous pouvez ajouter différentes classes pour sélectionner ou sélectionner par type comme ceci:

$('input[type="checkbox"]').removeAttr("disabled");