Foros del Web » Programando para Internet » Javascript »

Validacion te textbox

Estas en el tema de Validacion te textbox en el foro de Javascript en Foros del Web. hola amigos. les muestro un extracto de un fomualrio que tengo. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original < form name = "FormGranIng" method = ...
  #1 (permalink)  
Antiguo 07/05/2013, 10:31
Avatar de Killerx_8937  
Fecha de Ingreso: noviembre-2006
Mensajes: 99
Antigüedad: 17 años, 4 meses
Puntos: 0
Validacion te textbox

hola amigos.

les muestro un extracto de un fomualrio que tengo.

Código Javascript:
Ver original
  1. <form name="FormGranIng" method="post" action="">
  2.         <table>
  3.             <tr>
  4.                 <td>
  5.                     <table id="TablaA">
  6.                         <tr>
  7.                             <td><input name="A[]"  id="A" type="text" class="textbox"  size="4" maxlength="10" onChange="valNum(this);" tabindex="6"></td>
  8.                         </tr>
  9.                     </table>                </td>
  10.                 <td>
  11.                     <input type="button" class="button"  value="+"  onClick="agregarCelda('TablaA','A')">
  12. </td>
  13.             </tr>
  14.          </table>
  15. </form>

sobre este formulario estoy agregando celdas dinamicamente asi
Código Javascript:
Ver original
  1. function agregarCelda(idTabla,nombreCelda)
  2. {
  3.     nuevaFila = document.getElementById(idTabla).rows[0];
  4.  
  5.   nuevaCelda=nuevaFila.insertCell(-1);
  6.   nuevaCelda.innerHTML="<td><input name='"+nombreCelda+"[]' type='text' class='textbox' size='4' maxlength='10' onChange='valNum(this);'></td>";
  7.  
  8. }


Para validar el textbox le paso el objeto con el cual obtengo el value y el id para retornar el foco,

la funcion valNum es la siguiente

Código Javascript:
Ver original
  1. function valNum(numero)
  2. {
  3.     if (!/^[0-9]*\.?[0-9]{1,2}$/.test(numero.value))
  4.     {
  5.         alert("El valor " + numero.value + " no es un numero o tiene mas de 2 decimales");
  6.         document.getElementById(numero.id).value="";
  7.         document.getElementById(numero.id).focus();
  8.     }
  9.        
  10. }

el problema es que como estoy generando celdas y inputs dinamicamente, no se me ocurre como generar el id de cada textbox para que en caso que la validacion no tenga exito retornarle el foco u poner el campo en blanco.

se entiende??
  #2 (permalink)  
Antiguo 07/05/2013, 10:38
 
Fecha de Ingreso: noviembre-2012
Mensajes: 84
Antigüedad: 11 años, 4 meses
Puntos: 5
Respuesta: Validacion te textbox

Hola!!

Debes generar un id diferente para cada celda. Yo lo haría con un incremental, es decir, concatenar el id con el numero incremental.

Algo así: out.println("<select id='billingA"+i+"' required>" );
En este caso utilizo JSP, con javascript será parecido.

Nose si sirve mi explicación, pero bueno...
  #3 (permalink)  
Antiguo 07/05/2013, 19:21
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Validacion te textbox

Cita:
Iniciado por Killerx_8937 Ver Mensaje
hola amigos.

les muestro un extracto de un fomualrio que tengo.

Código Javascript:
Ver original
  1. <form name="FormGranIng" method="post" action="">
  2.         <table>
  3.             <tr>
  4.                 <td>
  5.                     <table id="TablaA">
  6.                         <tr>
  7.                             <td><input name="A[]"  id="A" type="text" class="textbox"  size="4" maxlength="10" onChange="valNum(this);" tabindex="6"></td>
  8.                         </tr>
  9.                     </table>                </td>
  10.                 <td>
  11.                     <input type="button" class="button"  value="+"  onClick="agregarCelda('TablaA','A')">
  12. </td>
  13.             </tr>
  14.          </table>
  15. </form>

sobre este formulario estoy agregando celdas dinamicamente asi
Código Javascript:
Ver original
  1. function agregarCelda(idTabla,nombreCelda)
  2. {
  3.     nuevaFila = document.getElementById(idTabla).rows[0];
  4.  
  5.   nuevaCelda=nuevaFila.insertCell(-1);
  6.   nuevaCelda.innerHTML="<td><input name='"+nombreCelda+"[]' type='text' class='textbox' size='4' maxlength='10' onChange='valNum(this);'></td>";
  7.  
  8. }


Para validar el textbox le paso el objeto con el cual obtengo el value y el id para retornar el foco,

la funcion valNum es la siguiente

Código Javascript:
Ver original
  1. function valNum(numero)
  2. {
  3.     if (!/^[0-9]*\.?[0-9]{1,2}$/.test(numero.value))
  4.     {
  5.         alert("El valor " + numero.value + " no es un numero o tiene mas de 2 decimales");
  6.         document.getElementById(numero.id).value="";
  7.         document.getElementById(numero.id).focus();
  8.     }
  9.        
  10. }

el problema es que como estoy generando celdas y inputs dinamicamente, no se me ocurre como generar el id de cada textbox para que en caso que la validacion no tenga exito retornarle el foco u poner el campo en blanco.

se entiende??
Acá tenés 2 situaciones, si en la llamada pasas el parámetro 'this', no necesitasel id, ya que te estás refiriendo al propio elemento, por otro lado, poner un focus() tras un onchange, es bastante problemático, ya que necesita necesariamente de un onblur para dicho campo, podés corregirlo con esto, adicionalmente hacemos las dos cosas, fijamos el foco y ponemos en blanco el campo
Código:
<!DOCTYPE html>
<html lang="es-ar">
<head>
<meta charset="utf-8" />
<title>Html5</title>
<script type="text/javascript">
//<![CDATA[
function valida(elemento){
if(!/^[0-9]*\.?[0-9]{1,2}$/.test(elemento.value)){
alert('error');
elemento.value = "";
setTimeout(function(){elemento.focus();},50); // para conseguir el foco tras onchange le dás una pequeña demora
}
}
//]]>
</script>
</head>
<body>
<form action="#">
<input type="text" value="" name="a" onchange="valida(this);" /><br />
<input type="text" value="" name="b" onchange="valida(this);" /><br />
</form>
</body>
</html>
Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: formulario, funcion, html, input, textbox, validacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:51.