2010-02-27 19 views
8

estoy inhabilitación de un formulario basado en una casilla ...Seleccionar y desactivar cada campo de entrada dentro de un formulario, envuelto en una tabla en jQuery

Estoy teniendo problemas para añadir el atributo deshabilitado.

aquí es lo que tengo hasta ahora: HTML:

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

selector de Javascript/atribuir manipulación (jQuery):

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

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

Cuando Alerto el item dentro del .each() alerta [object HTMLInputElement]

No estoy seguro de cómo seleccionar correctamente el elemento de entrada. ¿Qué estoy haciendo mal?

Respuesta

12

La función no le dará un objeto jQuery. Debe ser:

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

(tenga en cuenta que también he simplificado el selector, que todavía funciona)
Si usted no está haciendo nada con eles cada elemento, esto funcionará así:

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

Nota: en las versiones actuales de jQuery, esto se cambió a '.prop (" disabled ", true)'. Estoy bastante seguro de que 'attr' no funcionaba de todos modos. – Kobi

4

....

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

el problema es la falta de $() en la función each() ...

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