2012-01-14 11 views
16

¿Qué significa cuando el atributo de forma action es "#" (número/símbolo de libra/signo/carácter)?¿Qué significa cuando el atributo de acción de formulario es "#" (número/símbolo de libra/signo/carácter)?

¿Qué ocurre cuando el atributo formaction de una entrada de formulario se establece en "#"? ¿Esto evita que la entrada se envíe al servidor?

<form method="GET" action="example.php"> 
    <input type="text" size="20" name="text1" value="text1" formaction="#"/> 
    <input type="text" size="20" name="text2" value="text2"/> 
    <input type="submit" value="Submit"/> 
</form> 

Respuesta

10

El significado de # como referencia de URL (ya sea como action o formaction valor de atributo u otro) es una referencia al inicio del documento base actual. El documento base es el documento actual, a menos que se haya establecido una etiqueta <base href=...>.

Lo que sucede depende de la situación. Normalmente, el navegador solicita la página nuevamente con una parte de consulta en la URL (y la página se carga de nuevo, lo que puede implicar que se ejecuten scripts del lado del cliente), pero si la misma consulta se usó anteriormente, el navegador probablemente use su caché Además, como se hace referencia al comienzo del documento, el foco en cualquier elemento de formulario se pierde y la página puede desplazarse hacia atrás.

Aunque # es bastante común en algunos estilos de codificación, no es confiable; su objetivo se logra mejor utilizando controladores de eventos del lado del cliente.

El atributo formaction tiene un significado solo para los botones de envío. Un elemento de entrada de texto no constituye un botón de envío, aunque puede desencadenar el envío de formularios, por lo que aquí se ignora el atributo.

+0

De paso: cuando dijo "es confiable", ¿quiso decir "no es confiable"? –

+0

@MattGibson, derecha, gracias, corregido. –

2

El formulario se enviará a sí mismo (URL actual). Creo que es lo mismo que una acción vacía.

Además, puede ser útil si la acción va a cambiar por javascript en otro momento.

1

explica en w3schools: http://www.w3schools.com/html5/html5_form_attributes.asp

Formulario atributos de anulación

Los atributos forma de anulación le permiten anular algunas de las atributos establecidos para el elemento de formulario.

Los atributos forma de anulación son:

formAction - Reemplaza el atributo de acción forma
formenctype - anula el atributo forma enctype
formmethod - reemplaza el método representación de atributo
formnovalidate - anula el atributo forma novalidate
formtarget - Invalida el atributo de destino de formulario
Nota: Los atributos de anulación de formulario funcionan con los siguientes tipos:
enviar e imagen.

<form action="demo_form.asp" method="get" id="user_form"> 
E-mail: <input type="email" name="userid" /><br /> 
<input type="submit" value="Submit" /> 
<br /> 
<input type="submit" formaction="demo_admin.asp" value="Submit as admin" /> 
<br /> 
<input type="submit" formnovalidate="true" 
value="Submit without validation" /> 
<br /> 
</form> 

Así que sí, que son absolutamente correcto que anula la acción, pero sólo se anula el tipo de entrada y enviar la imagen, no en el texto. De modo que puede tener 2 botones de envío diferentes en la misma forma, pero puede conducir a diferentes tipos de validación. Para eso lo usaría.

Así que un # pondría la acción en la misma página en lugar de en otra.

Cuestiones relacionadas