Archive for the ‘javascript’ Category

¿Cómo se hace la función trim en javascript?

7 agosto 2009

Problema: ¿Cómo puedo hacer la función trim en javascript?

Solución: Mediante una expresión regular sale:

function trim(str)
    {
        return str.replace(/^\s\s*/, ”).replace(/\s\s*$/, ”);
    }

Anuncios

Validar varias direcciones de correo por expresiones regulares

7 agosto 2009

Problema: Sé como validar una dirección de correo mediante javascript y expresiones regulares, pero no sé cómo hacerlo para permitir que se puedan introducir varias direcciones separadas por el caracter coma.

Solución: Esta expresión regular valida varias direcciones de correo separadas por coma o por punto y coma, y se permiten también espacios en blanco entre las direcciones de correo a ambos lados del separador (, 😉

var emailRegEx = /^(([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+)(([\s]*[;,]+[\s]*(([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+))*)$/;

Cómo puedo en javascript obtener el contenido del atributo onclick en una cadena de texto?

30 marzo 2009

Problema: Quiero obtener el contenido del atributo onclick de un objeto javascript para manipularlo con las funciones de cadena, por lo que lo necesito como un objeto tipo string. Pero al obtenerlo mediante objeto.getAttribute(“onclick”) no me vuelve como una cadena de texto, ya que no puedo aplicar ningún método de cadena sobre lo que me devuelve.

Solución: Mediante getAttribute obtendremos lo que realmente hay en ese atributo, que seguramente será una función anónima. Si lo necesitamos como una cadena de texto, podemos hacer lo siguiente:

var obj = document.getElementById("objId"); 
var attributesArray = obj.attributes;
var contenido = attributesArray["onclick"].nodeValue;

Cómo reemplazo todas las apariciones de un carácter en una cadena de javascript?

30 marzo 2009

Problema: Quiero reemplazar todas las apariciones de un caracter o una cadena en un objeto string de javascript, pero al usar el método “replace” sólo me sustituye la primera ocurrencia, no los demás.

Solución: Tal y como funciona la función replace de javascript, solo sustituye la primera ocurrencia que se encuentra. Para sustituir todas podemos usar replace reiteradamente mediante un bucle for, o bien y más elegante, usar expresiones regulares. Por ejemplo:

micadena.replace( new RegExp(“[\’]”,”g”),”” )

Nos eliminaría todas las comillas simples que aparecieran en nuestra cadena.

Problemas al usar callbacks simultáneos en asp.net

25 febrero 2009

Problema: Estoy usando callbacks para traerme datos del servidor (implementando el interfaz System.Web.UI.ICallbackEventHandler) , pero cuando lanzo varios a la vez (es decir, que algunos callbacks empiezan sin que hayan terminado los anteriores) esto no parece comportarse como debiera.

Solución: Hay un error en la implementación del método WebForm_CallbackComplete() que es generado por asp.net cuando estamos usando el método  Page.ClientScript.GetCallbackEventReference para que nos cree los scripts necesarios para realizar los callbacks (versión de cuando escribo esto: .NET 3.5)
Para arreglarlo hay que sustituir la función en cuestión por ésta otra. Para ello la incluimos en nuestra página aspx:

function WebForm_CallbackComplete_SyncFixed() {
  for (var i = 0; i < __pendingCallbacks.length; i++) {
   callbackObject = __pendingCallbacks[ i ];
  if (callbackObject && callbackObject.xmlRequest && (callbackObject.xmlRequest.readyState == 4)) {
      if (!__pendingCallbacks[ i ].async) {
     __synchronousCallBackIndex = -1;
   }
   __pendingCallbacks[i] = null;
   var callbackFrameID = "__CALLBACKFRAME" + i;
   var xmlRequestFrame = document.getElementById(callbackFrameID);
   if (xmlRequestFrame) {
     xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
   }
   WebForm_ExecuteCallback(callbackObject);
  }
 }
}

Y para que nuestra página use esta función en vez de la que da problemas, incluimos también esto al final de la página:

if (typeof (WebForm_CallbackComplete) == "function") {
  WebForm_CallbackComplete = WebForm_CallbackComplete_SyncFixed;
}

El código para la solución ha sido tomado de aquí

Sustituir caracteres especiales en cadenas de texto por javascript

14 mayo 2008

Problema: Quiero sustituir todas las ocurrencias de algun carácter especial, como por ejemplo el signo de interrogación “?”, en una cadena de texto, mediante javascript

Solución: Usar el método replace mediante expresiones regulares. En este caso sería:
micadena = micadena.replace(/\?/g, ‘texto’);

Nota: Para sustituir todos los caracteres especiales por su codificación unicode, tenemos el método escape()