2010-02-27 6 views
8

Je suis un formulaire basé la désactivation sur une case à cocher ...Sélectionner et désactiver chaque champ d'entrée dans une forme, enveloppé dans une table jquery

Je ne parviens pas à ajouter l'attribut disabled.

voici ce que je suis arrivé à ce jour: HTML:

<table id="shipInfoTable"> 
    <tr> 
    <td>Name:</td> 
    <td><input type="text" name="name" /></td> 
    </tr> 
    ... 
</table> 

manipulation sélecteur/attribut Javascript (JQuery):

$("#shipInfoTable tbody tr td input").each(function(index, item){ 
    item.attr("disabled", true); 
}); 

Chrome Dev erreur Console: Uncaught TypeError: Object #<an HTMLInputElement> has no method 'attr'

Lorsque Je alerte le item dans le .each() il alerte [object HTMLInputElement]

Vous ne savez pas exactement comment sélectionner correctement l'élément d'entrée. Qu'est-ce que je fais mal?

Répondre

12

La fonction ne vous donnera pas d'objet jQuery. Il devrait être:

$("#shipInfoTable input").each(function(index, item){ 
    $(item).attr("disabled", true); 
}); 

(notez que je simplifie également votre sélection, il fonctionne toujours)
Si vous ne faites pas eles quoi que ce soit à chaque élément, cela fonctionnera aussi bien:

$("#shipInfoTable input").attr("disabled", true); 
+1

Veuillez noter: dans les versions actuelles de jQuery, ceci a été changé en '.prop (" disabled ", true)'. Je suis sûr que 'attr' n'a pas fait était prévu de toute façon. – Kobi

4

....

$("#shipInfoTable tbody tr td input").each(function(){ 
    $(this).attr("disabled", true); 
}); 
0

la question est le manque de $() dans la fonction .each() ...

$("#shipInfoTable tbody tr td input").each(function(index, item){ 
    $(item).attr("disabled", true); 
});