Trim

¿Sabes de alguna función trim que funcione en netscape?
Yo he hecho la siguiente:
function trim(textbox)
{
var aux;
aux=textbox.value.replace(/^\s+/g,'').replace(/\s+$/g,'');
textbox.value=""; //para que netscape borre los espacios del principio si la palabra no tiene al final
if(aux!="")
{
textbox.value+=aux;
}
else if(!ie4)
{
textbox.value='\r'; //para cuando solo hay espacios en blanco
}
}//trim
Y la llamo en el onBlur. Aparentemente funciona. Pero en verdad, cuando compruebo la validez de los datos, después de haber aplicado el trim a un textbox con espacios, actúa como si el textbox contuviera algo.
... Socorro!
1

1 Respuesta

28.975 pts.
Estás utilizando una función muy compleja. He probado la que te voy a enviar en Explorer 5.5 y en Netscape 6, y no parece que dé ningún tipo de problemas, ni siquiera con una cadena compuesta sólo por espacios. Ahí va:
function trim(textbox) {
textbox.value=textbox.value.replace(/^\s+/,'').replace(/\s+$/,'');
}
He eliminado el flag "g" de las expresiones regulares, porque no es necesario cuando sabes que sólo van a coincidir, como mucho, con un trozo de la cadena fuente. Pruébalo, y si tienes problemas, vuelve a preguntarme (y si puedes, dame la versión exacta de navegador donde te surgen).
Así empecé la función, y tuve que añadir lo otro para arreglar los fallos. ¿Has probado intorduciendo una palabra con solo espacios al principio o solo espacios en blanco y te funciona?. A mí en netscape no. ¿En qué evento llamas a la función?
Te he hecho un copy/paste del "acerca de" del netscape para que veas la version. Si veo más de un nombre ya me lio :P. Éste es el que me da problemas. Ahí va:
Netscape 6
Mozilla/5.0 (Windows; U; WinNT4.0; es-ES; m18) Gecko/20010131 Netscape6/6.01
Gracias!
Mi versión es:
Mozilla 0.9.1+
Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:0.9.1+) Gecko/20010625
Un poco más moderna que la tuya. Tú usas Netscape 6.01, que está basado en la "release" M18 de Mozilla (el proyecto de Open Source que "heredó" el código fuente de Netscape 4), y yo uso un Mozilla posterior a la release 0.9.1 (lo que llaman una "nightly build", en particular la que se hizo el 25/6/2001, hace tres días).
Lo que estoy haciendo es llamar a la función en el onBlur del input, y después ejecutar un alert() dentro de la función para asegurarme de que el valor no tiene espacios ni delante ni detrás:
<html>
<head>
<script>
function trim(textbox)
{
textbox.value=textbox.value.replace(/^\s+/,'').replace(/\s+$/,'');
alert('"'+textbox.value+'"');
}//trim
</script>
</head>
<body>
<form>
<input type="text" onblur="trim(this)">
<input type="submit">
</form>
</body>
</html>
¿Ves caracteres raros en el servidor, después de haber hecho el submit? Eso sería francamente curioso...
Por cierto, si quieres bajarte la última versión de Mozilla (actualizada cada noche, pero puede tener problemas más o menos graves), puedes hacerlo en:
http://ftp.mozilla.org/pub/mozilla/nightly/latest/mozilla-win32-talkback.zip
La última release oficial está siempre en http://www.mozilla.org/releases. Las releases oficiales siempre son estables.
No dejes de informarme...
Aún no he llegado a trabajar con los elementos enviados. Lo que hago ahora falla por las comprobaciones de antes del submit.
Lo que me ha parecido entender del problema es lo siguiente. Aparentemente si desde javascript le asignas al value de un textbox, el netscape comprueba que lo que le asignas y lo que el tiene guardado sean diferentes. Aunque lo que le asignes no tenga espacios al principio y lo que el se guarda, sí. Lo curioso del caso es que si lo que se guarda tenía espacios al final y tu se los quitas entonces si que te deja asignar "tu" valor. De aquí que en mi función pusiera textbox.value="" antes que nada, así lo que el se guardaba era diferente a lo que le intentaba asignar seguro.
Ahora bien, en el caso de los espacios en blanco esto no funciona porque, según parece (no se si estoy equivocado) para netscape es lo mismo un espacio en blanco que cinco, así que cuando aplico el trim, simplemente no hace nada. Por eso, en éste caso intenté poner un \r. Pero aunque visualmente funcione (el cursor se coloca al principio), realmente le está añadiendo un carácter y, textbox. value=="" devuelve un true aunque, aparentemente esté vacío.
No sé si me he explicado muy bien. ¿Tiene algún sentido lo que he dicho? En todo caso, gracias por las molestias.
Sinceramente, creo que el error que estás sufriendo está en algún otro sitio, porque textbox. value es como una variable cualquiera. Es decir, que puedes poner cualquier valor, con o sin espacios al principio o al final, y en cualquier número, y lo refleja en el textbox literalmente.
El contenido de una caja de texto conserva los espacios en blanco, al revés de lo que ocurre con el código HTML. He probado a asignar "a pedales" un valor a la caja de texto, y te aseguro que conserva los espacios. Además, el alert() que he puesto en la prueba (mira mi segunda respuesta) me garantiza que no quedan caracteres extraños... El texto sale entrecomillado, así que no hay duda.
En conclusión, no veo ningún problema con los espacios. Por lo que parece, la función trim() (versión simplificada) funciona... No sé qué decirte.
En fin, ya me contarás si descubres algo nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas