2011-01-18 27 views
7

que tiene el error val().length es nulo o no un objeto" de código:Javascript/jQuery - val() Longitud' es nulo o no un objeto

function size(sender, args) { 

    var sizeVariable = $("input[id$='txtHello']"); 
    if (sizeVariable.val().length == 0) 
    { 
      args.IsValid = false; 
    } 
} 

El error se produce en el 'if' . estoy tratando de comprobar si:

  1. existe la variable
  2. si hay algo en la variable

Creo que el problema radica en el punto (1). ¿Cómo puedo verificar si el campo de texto existe (para resolver el problema)?

Respuesta

16

Usted puede probar si el campo de entrada existe como tal:

if($("input[id$='txtHello']").length > 0) { ... } 

Si no lo hace, val() volverá undefined.

Se podía saltar inmediatamente a la siguiente:

if(!!$("input[id$='txtHello']").val()) 

... ya que ambos undefined y "" resolvería a false

+0

Esto es fantástico! – user532104

1

es sizeVarialbe nula cuando se trata de comprobar la longitud?



function size(sender, args) { 

    var sizeVariable = $("input[id$='txtHello']"); 

    if (sizeVariable != null) 
    { 
     if (sizeVariable.val().length == 0) 
     { 
      args.IsValid = false; 
     } 
    } 
    else 
    { 
     alert('error'); 
    } 
} 

+0

'sizeVariable' nunca será nulo. Si el campo de texto no existe, 'sizeVariable' será un objeto jQuery vacío, que no es nulo. La función 'val()' aún estará disponible en él, pero devuelve 'undefined' para que' val(). Length' no esté disponible. –

+0

@David, gracias, no me di cuenta de eso. – WraithNath

5

Probar if (sizeVariable.val() == undefined || sizeVariable.val().length == 0) en su lugar. De esta manera, va a comprobar si hay un valor en primer lugar, antes de tratar de ver cuánto tiempo es, si está presente

+1

¿por qué @BvdVen usa a === y usted usa == en su lugar? ¿Cual es correcta? –

+0

=== es más estricto y mejor en este caso que == –

1

haga su cheque como este

if (sizeVariable.val() === undefined || sizeVariable.val().length == 0) 
0

¿Usted ha intentado ...?

if(sizeVariable.size() == 0) 
{ 
    args.IsValid = false; 
} 
+3

¿* Lo * ha intentado? –

+0

Lo siento, compañero, esto parece fallar – user532104

+0

Lo siento, pero el tamaño() debe ser minúsculo, parece ser la solución más simple para mí. – baked

0

En jQuery puede utilizar:

if(input.val().length > limit) 

o si por alguna razón no funcionó puede utilizar:

if((input.val()).length > limit) 
Cuestiones relacionadas