2012-04-18 14 views
5

Estoy tratando de ver si la longitud del campo de texto es al menos cierta longitud. aquí está mi código:comprobar el valor del campo de texto longitud

<form name="form2" id="form2" onsubmit="return validate()"> 
length 4: <input type="text" name = "t" id="t" /> 
<input type="button" name="submit" value="submit" /> 
</form> 

<script> 
function validate() { 
    document.write("good"); 
    submitFlag = true; 
    if(document.form2.t.value.length!=4){ 
     submitFlag=false; 
     alert("ivalid length - 4 characters needed!"); 
    } 
    return submitFlag; 
} 
</script> 

cuando hago clic en enviar, no pasa nada.

+1

Está utilizando 'document.write()' en el contexto incorrecto de nuevo ... – Teemu

Respuesta

0

es probable que desee mayor o igual que (> =), en lugar de no es igual a (! =) Si desea que "al menos una cierta longitud"

4

Cambiar el botón de envío a type = "submit" . El formulario nunca se envía para que no se llame a la función de validación.

0

Su botón debe ser

<input type="submit" name="submit" value="submit" /> 

de otro modo no se producirá el evento onsubmit. Además, use console.log() para la depuración, en lugar de document.write().

0

que haber detectado varios errores:

  • no utilice document.write(), se sobrescribirá el documento actualmente abierto
  • form2 hay ninguna propiedad de document. Puede usar document.forms.form2, pero document.getElementById("t") es más simple aquí
  • Su expresión no marca "al menos 4", comprueba "exactamente 4".
  • Su botón no enviará nada. Cambiarlo a <button type="submit"> o <input type="submit" />
  • podría especificar un pattern=".{4}" para la entrada o darle un atributo required
+0

1. ¿Qué uso en su lugar? solo escribe el mensaje a un div? 2. form2 es el nombre/id del formulario. Supongo que este tutorial que estoy usando debe ser muy antiguo ... 3. ¿Hay alguna ventaja al usar javascript para la longitud mínima/máxima? – droidus

+0

Sí, después de cargar el documento, necesita manipular el DOM; por ejemplo, manipular el texto interno de un div. @ Validación de HTML5: la ventaja es que no necesitará javascript (en los navegadores modernos). Por cierto: mínimo/máximo son solo para números – Bergi

0

Hay algunos problemas que tiene. 1) Debe hacer que su entrada sea un botón de envío y 2) debe eliminar su declaración document.write(). Cambiar el código para la siguiente (or see this jsFiddle):

<form name="form2" id="form2" onsubmit="return validate()"> 
length 4: <input type="text" name = "t" id="t" /> 
<input type="submit" name="submit" value="submit" /> 
</form> 

<script> 
function validate() { 
    submitFlag = true; 
    if(document.form2.t.value.length!=4){ 
     submitFlag=false; 
     alert("ivalid length - 4 characters needed!"); 
    } 
    return submitFlag; 
} 
</script>​​​​ 

Eras muy cerca, pero se puede usar un poco de limpieza en ese código (Nota: no aportó ninguna).

1

tipo La entrada tiene que ser "submit"

<form name="form2" id="form2" onsubmit="return validate()"> 
    length 4: <input type="text" name = "t" id="t" /> 
    <input type="submit" name="submit" value="submit" /> <!--INPUT TYPE MUST BE SUBMIT --> 
    </form> 

    <script> 
    function validate() { 
     document.write("good"); 
     submitFlag = true; 
     if(document.form2.t.value.length!=4){ 
      submitFlag=false; 
      alert("ivalid length - 4 characters needed!"); 
     } 
     return submitFlag; 
    } 
</script> 
0

También habría que añadir un atributo maxlength a la entrada de texto, que va a ayudar al usuario.

<form name="form2" id="form2" onsubmit="return validate();"> 
    <input type="text" name="t" id="t" maxlength="4"/> 
    <input type="submit" name="submit" value="submit"/> 
</form> 

<script type="text/javascript"> 
    function validate() 
    { 
     if (document.getElementById("t").value.length != 4) 
     { 
      alert("Invalid length, must be 4 characters"); 
      return false; 
     } 
     return true; 
    } 
</script> 
Cuestiones relacionadas