Impedir editar en Netscape6

¿Cómo puedo evitar escribir en un textbox en Netscape6? He intentado que el textbox llamara a una función en el evento onkeypress y que esta devolviera false. Tb he probado a hacer e.which=null, pero nada de nada. ¿Alguna idea? Gracias

1 Respuesta

Respuesta
1
Afortunadamente, Netscape 6 implementa el atributo READONLY (al igual que Explorer) para los campos de texto (y los demás elementos) de los formularios. Así que no necesitarás escribir nada de código para hacer lo que deseas. Bastará con:
<input type="text" name="frmTexto" value="No me podrás cambiar" readonly>
Espero que eso resuelva tu duda. Si necesitas cualquier otra aclaración, pregúntame de nuevo.
¿Si lo que quiero es inhibir solo unas teclas en concreto?
Te explico mi caso:
En algunas cajas de texto quiero que el Nestscape solo les deje editar números(no validarlo cuando lo envíe, sino en el mismo momento en que escriba)
También necesito que al pulsar la tecla return no haga nada para que los formulario no se envíen antes de tiempo.
Muchas gracias
Como parece que Netscape 6 tiene problemas con la solución típica que consiste en usar el evento onKeyDown para bloquear las teclas que no interesen (el atributo que hay que mirar no es el which de Netscape 4, sino el keyCode, como en Explorer), debido a que parece ignorar un return false en el manejador de eventos, te daré una solución que actúa "a posteriori".
Para ello, en vez de usar onKeyDown para bloquear las teclas que no interesan, usaremos onKeyUp y comprobaremos "qué se ha tecleado", para filtrar los caracteres no válidos. El filtrado se hará mediante el método replace() del objeto String, y con la ayuda de una expresión regular:
<html>
<head>
<script language="Javascript"><!--
var clickedButton=false;
function checkClickedButton() {
if (clickedButton) {
clickedButton=false;
return true;
} else return false;
}
function filter(frmField) {
var re=/\D/gi;
frmField.value=frmField.value.replace(re,'');
}
// --></script>
</head>
<body>
<form action="javascript:alert('Enviado')" onSubmit="return checkClickedButton()">
<input type="text" onKeyUp="filter(this)">
<input type="submit" value="Enviar" onClick="clickedButton=true">
</form>
</body>
</html>
En este ejemplo el ACTION es, simplemente, un alert(), para comprobar que el submit() se realiza sólo cuando deseamos. El bloqueo de submit() con Return se realiza por medio de la función checkClickedButton() y la variable global clickedButton. El evento onSubmit del FORM llama a checkClickedButton(), que sólo devuelve TRUE si se ha pulsado el botón Enviar (y por tanto, realiza el submit()). En cualquier otro caso (por ejemplo, si se ha pulsado Return), la función devuelve FALSE y no se ejecuta el submit().
Por lo que concierne al filtrado de teclas: el evento onKeyUp de la caja de texto llama a una función filter(), a la que se le pasa la referencia de la propia caja de texto. Esta función define una sencilla expresión regular, que detecta todos los caracteres no numéricos en una cadena. El método replace() reemplaza todos los hallazgos de la expresión regular por cadenas vacías, eliminando efectivamente cualquier carácter que no sea un número del campo de texto.
Si quieres permitir la introducción de otros caracteres en el campo de texto, sólo habría que cambiar la expresión regular. Supongamos que queremos permitir también el signo '-', y el punto decimal. Entonces, la expresión regular quedaría así:
/[^0-9\.\-]/gi
Algo más compleja... Las expresiones regulares son una tecnología potente, pero bastante críptica. Te describo rápidamente lo que hace eso:
COINCIDE CON (//) el conjunto de caracteres ([]) que no sea (^) de 0 a (-) 9, el punto decimal literal (\.) y el guión literal (\-), en toda la cadena (g) y sin importar mayúsculas o minúsculas (i).
Si necesitas algo más, no dudes en volverme a preguntar.

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas