Foros del Web » Programando para Internet » Javascript »

Error al crear instancia de una clase - IE

Estas en el tema de Error al crear instancia de una clase - IE en el foro de Javascript en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 22/04/2009, 22:11
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
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
  #2 (permalink)  
Antiguo 22/04/2009, 22:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Error al crear instancia de una clase - IE

Yo he probado tal y como está y funciona en Internet Explorer (por lo menos se muestra el segundo alert()).

¿Cuál es el error que te da?

P.S.: El concepto de clases como tal no existe en Javascript.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 23/04/2009, 08:11
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 1 mes
Puntos: 9
Respuesta: Error al crear instancia de una clase - IE

Pude encontrar cual es el problema, pero no la solucion. En explorer cuando defino una variable que contiene una cadena y esta cadena tiene un caracter acentuado, el script falla. Asi que el problema esta en la funcion isChar cuando defino la cadena de caracteres. Si de estas cadenas elimino los caracteres acentuados, entonces el script funciona. No lo entiendo.
Gracias por tu respuesta y la aclaracion respecto a las clases.
Saludos.
__________________
Add, never Remove
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 23:15.