Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/05/2013, 19:21
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 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.