¿Cómo validar datos en tabla dinámica?

Com, verás, tengo un problema bastante raro; tengo el siguiente código que me crea una tabla dinámica, una función que me valida los datos de entrada de un <input type="text"> y tengo una función que me muestra un mensaje de ayuda en cuanto el elemento gana el foco:
function validarDatos(texto,validos)
{
    for (var i=0, txtSalida='', validos; i<texto.length; i++)
       if (validos.indexOf(texto.charAt(i)) != -1)
          txtSalida += texto.charAt(i)
    return txtSalida;
}
function passText(str)
{
 top.frames['abajo'].document.msg.msg1.value = str;
}
function tablaLaboral()
{
 var tabla=document.getElementById("tDinamica");
 tabla.style.border='1px solid';
 var fila=tabla.insertRow(-1);
 col1=fila.insertCell(-1);
 col1.appendChild(document.createTextNode("Nombre empresa:"));
 col1.style.fontSize='medium';    
 col2=fila.insertCell(-1);
 col2.innerHTML="<input type='text' name='Nempre[]' maxlength='30' onKeyUp=\"validarDatos(this.value,'áéíóúÁÉÍÓÚabcdefghijklmnñopqrstuvwxyz ABCDEFGHIJKLMNÑOPQRSTUVWXYZ')\" onFocus=\"passText('Digite nombre de la empresa.')\">";
 col3=fila.insertCell(-1);
 col3.appendChild(document.createTextNode("Teléfono:"));
 col3.style.fontSize='medium';    
 col4=fila.insertCell(-1);
 col4.innerHTML="<input type='text' name='telEmpre[]' maxlength='10' onKeyUp=\"validarDatos(this.value,'0123456789')\" onFocus=\"passText('Digite teléfono de la empresa.')\">";
 col5=fila.insertCell(-1);
 col5.appendChild(document.createTextNode("Cargo:"));
 col5.style.fontSize='medium';    
 col6=fila.insertCell(-1);
 col6.innerHTML="<input type='text' name='cargo[]' maxlength='30' onKeyUp=\"validarDatos(this.value,'áéíóúÁÉÍÓÚabcdefghijklmnñopqrstuvwxyz ABCDEFGHIJKLMNÑOPQRSTUVWXYZ')\" onFocus=\"passText('Digite cargo.')\">";       
}
El problema es que no me ejecuta la función de validarDatos... Pero la función de passText si la ejecuta.
Me gustaría saber cuál es el problema, o si hay alguna otra manera de hacerlo.

1 respuesta

Respuesta
1
Ciertamente, es bastante extraño el código que me adjuntas, porque creo que además está imcompleto... ¿no? ¿O es un código "prefabricado" por un tercero?
Te recomiendo que la generación de la tabla dinámica la hagas desde jquery. Puedes redefinir eventos y todo lo que quieras, además de ser mucho más sencillo de como lo presentas en este ejemplo.
Independientemente de eso (puedes documentarte en www.jquery.com) necesitaría el código completo de la página para ver todo el contexto.
Hola, este es el código completo, en cuanto al jquery, sería ideal, pero resulta que esto es para un proyecto y tengo que sustentarlo, y me prohibieron la utilización de código extraño, por lo que me toca trabajar en bloc de notas (No puedo hacer uso de herramientas como dreamweaver... etc) mejor dicho, me toca hacerlo a pié. Así que me he puesto en la tarea de investigar, preguntar lo que no entienda. La tabla dinámica es una modificación de ésta: http://www.forosdelweb.com/f13/aporte-tabla-dinamica-658011/  la analicé y la acoplé a lo que necesito, el código no es tan extraño así que si me preguntan en la exposición, podré sustentarlo.
Bueno, muchas gracias, espero me puedas ayudar
*******************************************************************************************************
Index.php
<html>
<head>
<script language="JavaScript1.3" src="validarCampos.js">
</script>
</head>
<frameset rows="20%,*,10%" border="0" frameborder="0" framespacing="0">
<frame name="arriba" src="encabezado.html" scrolling="no" noresize border="0" frameborder="0" framespacing="0">
<frameset cols="10%,*,10%" border="0" frameborder="0" framespacing="0">
<frame name="izquierda" src="bordes.html" scrolling="no" noresize border="0" frameborder="0" framespacing="0">
<frame name="medio" src="expLaboral.php">
<frame name="derecha" src="bordes.html" scrolling="no" noresize border="0" frameborder="0" framespacing="0">
</frameset>
<frame name="abajo" src="piePag.php" scrolling="no" noresize border="0" frameborder="0" framespacing="0">
</frameset>
</html>
*******************************************************************************************************
*****************************************************************
bordes.html
<html>
<head>
<title>
<title>
</head>
<body bgcolor="#FFFF99">
</body>
</html>
******************************************************************
******************************************************************
encabezado.html
<html>
<head>
<title>
<title>
</head>
<body bgcolor="#FFFF99">
<table border="0" width="100%" bgcolor="#FFFF99">
<tr>
<td align="center">
    <img src="Logo.jpg" width="82%" height="105">
   </td>
</tr>
</table>
</body>
</html>
******************************************************************
****************************************************************
piePag.php
<html>
<head>
<title>
<title>
<link rel="stylesheet" href="estiloPag.css" type="text/css" />
</head>
<body bgcolor="#FFFF99">
<table width="100%" style="border:none;">
<tr>
<td align="center">
   <form name="msg">
    <input type="text" name="msg1" size="100" value="" readonly="readonly" class="ama" id="msg1">
   </form>
 </td>
</tr>
</table>
</body>
</html>
****************************************************************
*****************************************************************
expLaboral.php
<html>
<head>
<title>Experiencia Laboral</title>
<link rel="stylesheet" href="estiloPag.css" type="text/css" />
<script language="javascript1.3" src="validarCampos.js"></script>
</head>
<body>
<form name="formulario">
<fieldset>
   <legend>Experiencia laboral</legend>
<table width="95%" border="0" id="tDinamica">
</table>
<table>
<tr>
<td>
 <input type="button" value="Añadir" onMouseOver="passText('Haga click aquí para añadir fila')" onClick="tablaLaboral()">
</td>
</tr>
</table>
</fieldset>
</body>
</html>
*****************************************************************
*****************************************************************
validarCampos.js
function validarDatos(texto,validos)
{
    for (var i=0, txtSalida='', validos; i<texto.length; i++)
       if (validos.indexOf(texto.charAt(i)) != -1)
          txtSalida += texto.charAt(i)
    return txtSalida;
}
function passText(str)
{
 top.frames['abajo'].document.msg.msg1.value = str;
}
function tablaLaboral()
{
 var tabla=document.getElementById("tDinamica");
 tabla.style.border='1px solid';
 var fila=tabla.insertRow(-1);
 col1=fila.insertCell(-1);
 col1.appendChild(document.createTextNode("Nombre empresa:"));
 col1.style.fontSize='medium';    
 col2=fila.insertCell(-1);
 col2.innerHTML="<input type='text' name='Nempre[]' maxlength='30' onKeyUp=\"validarDatos(this.value,'áéíóúÁÉÍÓÚabcdefghijklmnñopqrstuvwxyz ABCDEFGHIJKLMNÑOPQRSTUVWXYZ')\" onFocus=\"passText('Digite nombre de la empresa.')\">";
 col3=fila.insertCell(-1);
 col3.appendChild(document.createTextNode("Teléfono:"));
 col3.style.fontSize='medium';    
 col4=fila.insertCell(-1);
 col4.innerHTML="<input type='text' name='telEmpre[]' maxlength='10' onKeyUp=\"validarDatos(this.value,'0123456789')\" onFocus=\"passText('Digite teléfono de la empresa.')\">";
 col5=fila.insertCell(-1);
 col5.appendChild(document.createTextNode("Cargo:"));
 col5.style.fontSize='medium';    
 col6=fila.insertCell(-1);
 col6.innerHTML="<input type='text' name='cargo[]' maxlength='30' onKeyUp=\"validarDatos(this.value,'áéíóúÁÉÍÓÚabcdefghijklmnñopqrstuvwxyz ABCDEFGHIJKLMNÑOPQRSTUVWXYZ')\" onFocus=\"passText('Digite cargo.')\">";       
}
*****************************************************************
Bien, pues en tal caso, aunque no puedas usar jquery, lo que si vamos a hacer es usar Mozilla Firefox y un complemento que se llama Web Developer, que nos da TODOS los errores JavaScript (entre otras informaciones) que se producen en una página web que estamos ejecutando.
Instala Mozilla Firefox desde la siguiente dirección:
http://www.mozilla-europe.org/es/firefox/
y el complemento web-developer desde la siguiente direccion:
https://addons.mozilla.org/es-ES/firefox/addon/60
Una vez instalados ambos, y en ese orden, carga tu página desde Mozilla Firefox y si ves que el icono de la derecha se pone en rojo, pulsa sobre él y podrás tener acceso a toda la información del error JavaScript que te ha dado tu página.
Si a partir de dicha información no puedes solucionarlo, pégame el error e intentaré ayudarte.
Bien, muchas gracias por ayudarme, este complemento de Firefox está de lo mejor, pero de tanto darle vueltas al asunto, esta mañana logré encontrar la solución al problemita, era solo una bobadita, solo tenía que añadir this.value= ( onKeyUp=\"THIS.VALUE=validarDatos(this.value,'áéíóúÁÉÍÓÚabcdefghijklmnñopqrstuvwxyz ABCDEFGHIJKLMNÑOPQRSTUVWXYZ')\" ).
Pero de todas maneras, se te agradece.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas