Reimpreso de: https://www.cnblogs.com/huangjinyong/p/9467544.html
https://www.cnblogs.com/huangjinyong/p/9467544.html
Recientemente encontré un proceso de filtrado de datos de formulario. Usé el evento onclick del botón para verificar y descubrí que el formulario aún se envió después de la devolución falsa.
Así que estudié cuidadosamente la relación y la diferencia entre las funciones agregadas onclick, onsubmit y submit.
onsubmit:
puede anular este evento devolviendo falso en el controlador de eventos.
Utilice esta capacidad para validar datos en el lado del cliente para evitar que se envíen datos no válidos al servidor.
Si el controlador de eventos es llamado por el atributo onsubmit del objeto de formulario,
el código debe solicitar explícitamente el valor de retorno mediante la función de retorno,
y el controlador de eventos debe proporcionar un valor de retorno explícito para cada posible ruta de código en la función de controlador de eventos.
El método de envío no invoca el controlador de eventos onsubmit.
enviar:
el método de envío no invoca el controlador de eventos onsubmit.
Llame directamente al controlador de eventos onsubmit.
¿Al usar Microsoft? Internet Explorer 5.5 y posteriores,
puede llamar al método fireEvent con un valor de onsubmit en el parámetro
sEvent . 首先 生成 一个 formulario
<form action="#" method="POST" name="A" onsubmit="return X();">
<input type="text" value="" />
<input onclick="Y()" type="submit" value="提交" />
</form>
Escriba las funciones X () e Y () usted mismo, encontraremos que el orden de ejecución de estas funciones
-
onclick: Y();
-
al enviar: X ();
-
enviar();
En otras palabras
Siempre que onclick no devuelva falso, continúe ejecutando onsubmit
Siempre que onsubmit no devuelva falso, el formulario se envía
Presta atención al otro punto de la escritura.
Si está escrito en código js ,, button.onclick=function(){}
o button.onclick=函数名
; entonces escriba el valor de retorno directamente en el cuerpo de la función.
Si está escrito directamente en el atributo de la etiqueta, debe ser "return X ();" para obtener el valor de retorno de la función, de lo contrario simplemente llama a la función y no se pasa el valor de retorno
Escritura correcta:<input type=submit onclick="return X();">
//X() 返回false后,form的submit会被终止
Escritura incorrecta:
<input type=submit onclick="X()">
X() 返回false后未传递给onclick事件,form的submit会继续