Considere el siguiente formulario sencillo:Javascript campo de formulario HTML/problema de nombres de
<form method="GET" action="handle.php">
<input type="hidden" name="action" value="search">
</form>
envío de formulario se realiza mediante Javascript (IIU) en una llamada AJAX. Todos los campos se recopilan correctamente a partir del formulario. Entonces, Javascript desea enviar la llamada ajax al "form.action".
Aquí es donde comienza mi problema. El objeto formulario es del tipo HTMLFormElement. La propiedad de acción del formulario se supone que es de tipo cadena y debe contener "handle.php". Después de algunas horas de depuración, noté que form.action ahora es de tipo HTMLInputElement.
Mi pregunta es: ¿Es esto correcto el comportamiento de Javascript? Nunca hubiera pensado que definir un campo de formulario con el nombre de un atributo de formulario, esto sucedería. Mientras tanto, resolví el problema nombrando mi campo de manera diferente.
Gracias de antemano por cualquier consejo ...
encontrado una manera fácil de mostrar mi problema. En primer lugar la forma con el problema:
<form action="test.php">
<input type="hidden" name="action" value="test">
<input type="button" onclick="alert(this.form.action);">
</form>
Y la forma que le es propia:
<form action="test.php">
<input type="hidden" name="NOT_AN_ATTRIBUTE_NAME" value="test">
<input type="button" onclick="alert(this.form.action);">
</form>
En la primera, los estados emergentes "[HTMLInputElement objeto]", en el segundo: "http://localhost/test.php ".
¿Podría agregar también el código de Javascript – sunn0
? No sé si es correcto para JS, pero parece que está en la forma que describió, ¿es ese el gran problema para cambiar el nombre de la entrada de la acción por otro nombre? – Chris
@Chris: obviamente ya lo resolví cambiando el nombre de mi campo. Pero el problema persiste al publicar formularios usando javascript en llamadas ajax. Los campos de formulario no pueden tener el mismo nombre que los atributos de formulario. – djBo