2010-07-26 49 views
29

Estoy recorriendo las celdas en una fila de la tabla. cada celda tiene un cuadro de texto y quiero tomar el valor del cuadro de texto y colocarlo en una matriz.HTMLInputElement no tiene el método 'val'

function dothing() { 
     var tds = $('#'+selected+' td'); 
     var submitvals = new Array(); 
     tds.each(function(i) { 
      var val = $(this).children('input')[0].val(); 
      submitvals.push(val); 
     }); 
    } 

Más a la función, pero esto es todo lo que es relevante. Por alguna razón, cuando ejecuto este código, obtengo "HTMLInputElement no tiene método 'val'". Pensé que se suponía que los elementos de entrada tenían un método val() en jQuery que obtenía el valor por lo que no tiene sentido. ¿Me estoy perdiendo algo, o lo estoy haciendo mal?

Respuesta

63

val() es un método jQuery. .value es la propiedad del elemento DOM. Utilice [0].value o .eq(0).val() ....

+1

su respuesta me ayuda. Muchas gracias. – hiway

2
function dothing() { 
    var tds = $('#'+selected+' td'); 
    var submitvals = new Array(); 
    tds.each(function(i) { 
     var val = $($(this).children('input')[0]).val(); 
     submitvals.push(val); 
    }); 
} 
+2

un poco exagerado para extraer el elemento raw y volver a jQueerlo ... –

+0

sí, estoy de acuerdo contigo, pero quería mostrar que el método val() es un método de $(), no un elemento DOM. – edtsech

2

.val() es un método jquery. El uso de [0] devuelve el elemento de DOM, no el elemento jquery

var val = $(this).children('input:first').val(); 
16

.val() es una función jQuery, no una función de JavaScript. Por lo tanto, cambiar:

var val = $(this).children('input')[0].val() 

Para:

var val = $(this).children('input:eq(0)').val() 
0

Lo que no entiendo, es por eso que ninguna de las sintaxis sugeridas en esta u otras preguntas similares a éste parece funcionar para mí. Tuve que hacer prueba y error y finalmente tuve que usar:

MySelectElement.value = x;

Tampoco ayudó que las sugerencias de Visual Studio Intellisense ofrecieran un rango completamente diferente de nombres de métodos no trabajados, como ValueOf().

Cuestiones relacionadas