Hola para todos. La situacion es esta: tengo un archivo index.js donde tengo el script para manejar
eventos, controles, etc de la pagina index.php. Ademas, tengo otro script Validation.js donde defino
una clase para manejar la validacion de datos del formulario. En la pagina index.php tengo el siguiente
codigo:
index.php
Código html:
Ver original<html xmlns="http://www.w3.org/1999/xhtml"> window.onload = initialize;
...
index.js
Código javascript
:
Ver originalvar validation = null;
function initialize()
{
alert('Se ejecuta');
validation = new Validation();
alert('Esto ya no se ejecuta');
fillYearsSelect();
fillDaysSelect(30);
addEventHandler('txtEmail', 'blur', txtEmail_Blur);
addEventHandler('txtName', 'blur', txtName_Blur);
addEventHandler('txtLastname', 'blur', txtLastname_Blur);
addEventHandler('txtPassword', 'blur', txtPassword_Blur);
addEventHandler('cmbBirthmonth', 'change', selects_Change);
addEventHandler('cmbBirthyear', 'change', selects_Change);
addEventHandler('frmRegistration', 'submit', frmRegistration_Submit);
}
...
Validation.js
Código javascript
:
Ver originalfunction Validation()
{
var m_error = null;
this.validateText = function(value, minlen, maxlen, required){
if(required && !valueFilled(value))
{
m_error = 'Campo requerido.';
return false;
}
if(!checkBounds(value.length, minlen, maxlen))
{
m_error = 'El campo debe tener entre ' + minlen + ' y ' + maxlen + ' caracteres.';
return false;
}
for(i=0 ; i<value.length ; i++)
{
if(!isChar(value.substring(i, i+1), true))
{
m_error = 'Solo se admiten caracteres.';
return false;
}
}
return true;
}
this.validateNum = function(value, minval, maxval, required){
if(required && !valueFilled(value))
{
m_error = 'Campo requerido.';
return false;
}
if(!checkBounds(value, minlen, maxlen))
{
m_error = 'Debe ser un número entre ' + minlen + ' y ' + maxlen + '.';
return false;
}
if(isNaN(value))
{
m_error = 'Se esperaba un número.';
return false;
}
return true;
}
this.validateEmail = function(value){
var EMAIL_MINLENGTH = 3;
var EMAIL_MAXLENGTH = 255;
if(!valueFilled(value))
{
m_error = 'Campo requerido.';
return false;
}
if(!checkBounds(value.length, EMAIL_MINLENGTH, EMAIL_MAXLENGTH))
{
m_error = 'El correo electrónico debe tener entre ' + EMAIL_MINLENGTH + ' y ' + EMAIL_MAXLENGTH + ' caracteres.';
return false;
}
if(!(/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)/).test(value))
{
m_error = 'Correo electrónico inválido.';
return false;
}
return true;
}
this.validatePassword = function(value, minlen, maxlen)
{
if(!valueFilled(value))
{
m_error = 'No se ha escrito ninguna clave.';
return false;
}
if(!checkBounds(value.length, minlen, maxlen))
{
m_error = 'La contraseña debe tener entre ' + minlen + ' y ' + maxlen + ' caracteres.';
return false;
}
return true;
}
this.validateOption = function(value, referer){
if(value == 0 || value == null)
{
m_error = 'Falta seleccionar un valor de la lista ' + referer;
return false;
}
return true;
}
this.error = function(){
return m_error;
}
function valueFilled(value)
{
return value != null && value.length > 0 && !(/^\s+$/).test(value);
}
function isChar(chr, ignorecase)
{
var ucchrs = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ';
var lcchrs = 'abcdefghijklmnñopqrstuvwxyzáéíóú';
return (ignorecase && lcchrs.indexOf(chr.toLowerCase()) >= 0) || lcchrs.indexOf(chr) >= 0 || ucchrs.indexOf(chr) >= 0;
}
function checkBounds(value, minval, maxval)
{
return value >= minval && value <= maxval;
}
}
El error me sale en Internet Explorer al ejecutar la linea cuando creo una instancia del objeto Validation en el archivo index.js. En Firefox
me funciona correctamente, pero en IE no se ejecuta nada a partir de esa linea.
No entiendo el error. Si alguien se da alguna idea de que pueda estar pasando, agradecere que me pueda comentar, al menos una pista.
Saludos.