Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/04/2009, 22:11
mariano_donati
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 2 meses
Puntos: 9
Error al crear instancia de una clase - IE

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
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <script src="Scripts/main.js"></script>
  3. <script src="Scripts/Validation.js"></script>
  4. <script src="CodeBehind/index.js"></script>
  5. window.onload = initialize;
  6. ...


index.js
Código javascript:
Ver original
  1. var validation = null;
  2.  
  3. function initialize()
  4. {
  5.     alert('Se ejecuta');
  6.     validation = new Validation();
  7.     alert('Esto ya no se ejecuta');
  8.        
  9.     fillYearsSelect();
  10.     fillDaysSelect(30);
  11.    
  12.     addEventHandler('txtEmail', 'blur', txtEmail_Blur);
  13.     addEventHandler('txtName', 'blur', txtName_Blur);
  14.     addEventHandler('txtLastname', 'blur', txtLastname_Blur);
  15.     addEventHandler('txtPassword', 'blur', txtPassword_Blur);
  16.     addEventHandler('cmbBirthmonth', 'change', selects_Change);
  17.     addEventHandler('cmbBirthyear', 'change', selects_Change);
  18.     addEventHandler('frmRegistration', 'submit', frmRegistration_Submit);
  19.    
  20. }
  21. ...

Validation.js
Código javascript:
Ver original
  1. function Validation()
  2. {
  3.     var m_error = null;
  4.    
  5.     this.validateText = function(value, minlen, maxlen, required){
  6.         if(required && !valueFilled(value))
  7.         {
  8.             m_error = 'Campo requerido.';
  9.             return false;
  10.         }
  11.         if(!checkBounds(value.length, minlen, maxlen))
  12.         {
  13.             m_error = 'El campo debe tener entre ' + minlen + ' y ' + maxlen + ' caracteres.';
  14.             return false;
  15.         }
  16.         for(i=0 ; i<value.length ; i++)
  17.         {
  18.             if(!isChar(value.substring(i, i+1), true))
  19.             {
  20.                 m_error = 'Solo se admiten caracteres.';
  21.                 return false;
  22.             }
  23.         }
  24.         return true;
  25.     }
  26.    
  27.     this.validateNum = function(value, minval, maxval, required){
  28.         if(required && !valueFilled(value))
  29.         {
  30.             m_error = 'Campo requerido.';
  31.             return false;
  32.         }
  33.         if(!checkBounds(value, minlen, maxlen))
  34.         {
  35.             m_error = 'Debe ser un n&uacute;mero entre ' + minlen + ' y ' + maxlen + '.';
  36.             return false;
  37.         }
  38.         if(isNaN(value))
  39.         {
  40.             m_error = 'Se esperaba un n&uacute;mero.';
  41.             return false;
  42.         }
  43.         return true;
  44.     }
  45.    
  46.     this.validateEmail = function(value){
  47.        
  48.         var EMAIL_MINLENGTH = 3;
  49.         var EMAIL_MAXLENGTH = 255;
  50.        
  51.         if(!valueFilled(value))
  52.         {
  53.             m_error = 'Campo requerido.';
  54.             return false;
  55.         }
  56.         if(!checkBounds(value.length, EMAIL_MINLENGTH, EMAIL_MAXLENGTH))
  57.         {
  58.             m_error = 'El correo electr&oacute;nico debe tener entre ' + EMAIL_MINLENGTH + ' y ' + EMAIL_MAXLENGTH + ' caracteres.';
  59.             return false;
  60.         }
  61.         if(!(/\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)/).test(value))
  62.         {
  63.             m_error = 'Correo electr&oacute;nico inv&aacute;lido.';
  64.             return false;
  65.         }
  66.         return true;
  67.     }
  68.    
  69.     this.validatePassword = function(value, minlen, maxlen)
  70.     {
  71.         if(!valueFilled(value))
  72.         {
  73.             m_error = 'No se ha escrito ninguna clave.';
  74.             return false;
  75.         }
  76.         if(!checkBounds(value.length, minlen, maxlen))
  77.         {
  78.             m_error = 'La contrase&ntilde;a debe tener entre ' + minlen + ' y ' + maxlen + ' caracteres.';
  79.             return false;
  80.         }
  81.         return true;
  82.     }
  83.    
  84.     this.validateOption = function(value, referer){
  85.         if(value == 0 || value == null)
  86.         {
  87.             m_error = 'Falta seleccionar un valor de la lista ' + referer;
  88.             return false;
  89.         }
  90.         return true;
  91.     }
  92.    
  93.     this.error = function(){
  94.         return m_error;
  95.     }
  96.    
  97.     function valueFilled(value)
  98.     {
  99.         return value != null && value.length > 0 && !(/^\s+$/).test(value);
  100.     }
  101.  
  102.     function isChar(chr, ignorecase)
  103.     {
  104.         var ucchrs = 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚ';
  105.         var lcchrs = 'abcdefghijklmnñopqrstuvwxyzáéíóú';
  106.         return (ignorecase && lcchrs.indexOf(chr.toLowerCase()) >= 0) || lcchrs.indexOf(chr) >= 0 || ucchrs.indexOf(chr) >= 0;
  107.     }
  108.  
  109.     function checkBounds(value, minval, maxval)
  110.     {
  111.         return value >= minval && value <= maxval;
  112.     }
  113.    
  114. }

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.
__________________
Add, never Remove