Formulario

Tengo un formulario en una página web y un código en javascript que lo comprueba. El caso es que funciona perfectamente en IE4 pero al ejecutarlo en ie5 cuando visualizo el valor de un campo de texto me sale no definido. ¿Dónde puede estar el error? ¿Cómo puedo gestionar una base de datos sin servidor en javascript?
Gracias y saludos
1

1 respuesta

Respuesta
1
No me das ningún dato para diagnosticar dónde puede estar el fallo, y así es realmente difícil ayudarte. Lo único que te puedo dar es un ejemplo genérico para obtener el valor de un campo de texto que funciona en todos los navegadores.
Si tu formulario fuera:
<form name="miForm">
<input type="text" name="miTexto">
<input type="button" name="miBoton" value="Mostrar" onClick="alert(this.form.miTexto.value)">
</form>
El botón "Mostrar" te daría acceso al valor del campo "miTexto".
Si quieres acceder desde fuera del formulario al valor de miTexto, basta con usar la propiedad document. MiForm. MiTexto. Value, o bien document.forms[0]. MiTexto. value (si miTexto está en el primer formulario de la página), o incluso document.forms['miForm']. MiTexto. Value, que resulta útil en funciones en las que no conoces a priori el formulario sobre el que vas a actuar (puedes pasarlo como una variable).
Respecto de tu segunda pregunta, no es posible hacer nada que tenga ninguna utilidad con Javascript sin apoyarse en el servidor. Tan sólo podrías almacenar los datos de un sólo cliente (es decir, tu página almacenaría datos referentes a cada uno de los visitantes que tuviera, pero sólo podría acceder a los datos del propio visitante). Esto es así porque el único medio de almacenamiento permanente que tiene Javascript son las cookies, que además de que sólo pueden almacenar información local tienen limitaciones (5 cookies o 20Kb por dominio, 100Kb en total):
Espero haberte sido de alguna ayuda. No dudes en volver a preguntarme, con más detalles, si continúas teniendo problemas con tu formulario.
Hola. Muchas gracias por contestar. Te envío parte del código de página para haber si me puedes decir donde esta el error:
Código:
<form name="form2">
<p>
<input type="checkbox" name="ChkCategoria" value="checkbox">
Busqueda Exacta: Categoria
<input type="text" name="Categoria">
</p>
<p>
<input type="checkbox" name="ChkSoporte" value="checkbox">
Busqueda Exacta: Soporte
<input type="text" name="Soporte">
</p>
<p>
<input type="checkbox" name="ChkNombre" value="checkbox">
Busqueda Exacta: Nombre
<input type="text" name="Nombre">
</p>
<p> Tamaño: Minimo
<input type="text" name="Minimo">
Maximo
<input type="text" name="Maximo">
</p>
<p>
<input type="button" name="btnBuscar" value="Buscar" onClick="Buscar(this.form)">
<input type="reset" name="Reset" value="Reset">
</p>
</form>
<script Language="JavaScript">
function Buscar(Form) {
var res="";
var swRes=false;
var swAnterior=false;
res = "SELECT Datos.Descripción, Datos.Tamaño, "
res += "Categorias.Categoría, Soportes.[Nombre de Soporte] "
res += "FROM Soportes INNER JOIN (Categorias INNER JOIN Datos ON "
res += "Categorias.ID = Datos.CategoriasId_) ON Soportes.ID = "
res += "Datos.SoportesId_ WHERE (("
if (Form.Categoria.Value != "" ) {
res += "(Categorias.Categoría" ;
if (Form.ChkCategoria.checked == false )
res += ") Like '" + Form.Categoria.Value + "*'";
else
res += "='" + Form.Categoria.Value + "')";
swAnterior=true;}
if (Form.Soporte.Value != "" ) {
if (swAnterior==true) {
res += " and "; }
res += "(Soportes.Soporte";
if (Form.ChkSoporte.checked == false )
res += ") Like '" + Form.Soporte.Value + "*'";
else
res += "='" + Form.Soporte.Value + "')" ;
swAnterior=true;}
if (Form.Nombre.Value != "" ) {
if (swAnterior==true)
res += " and ";
res += "(Descripción.Nombre";
if (Form.ChkNombre.checked == false )
res += ") Like '" + Form.Nombre.Value + "*'";
else
res += "='" + Form.Nombre.Value + "')";}
if (res == "") {
res = "Debe indicar al menos un campo de texto"; }
else {
res += "));";
swRes=true; }
alert(res);
swRes=false;
// return swRes;
}
</script>
La verdad es que la mezcla de SQL con Javascript es un poco mareante, pero... No veo ningún error de sintaxis. Prueba a recuperar un sólo campo de tu formulario, con otra función:
function Trivial(frm) {
alert(frm.Nombre.value);
}
Y llama eso desde el onClick de un boton: onClick="Trivial(this.form)", en ese mismo formulario. Si te funciona, puedes pensar que es debido a que Javascript es "case-sensitive", y que por tanto Value y value no son lo mismo. Por lo general, Explorer era bastante permisivo con este tipo de faltas, pero tal vez JScript 5 (la implementación de Javascript en Explorer 5 y 5.5) se ha vuelto un poco más "estándar" que de costumbre... Prueba, a ver.
Es posible que haya algún otro error, pero no lo he visto... Un consejo: no llames a las variables en Javascript con nombres de objetos conocidos (como lo de ponerle Form a la variable formal de la función Buscar). Puedes provocar efectos extraños y errores difíciles de depurar (aunque puede no ser tu caso). Otra cosa: los nombres de casi todas las palabras reservadas de Javascript empiezan por minúscula. Explorer tragará en la mayor parte de los casos, pero eso no se ajusta al estándar y puede que te falle en alguna circunstancia (en Netscape 6 seguro que falla...)

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