Tengo un problema al usar botones dentro del formulario. Quiero que ese botón llame a la función. Lo hace, pero con un resultado no deseado que actualiza la página.
Mi código simple es así
<form method="POST">
<button name="data" onclick="getData()">Click</button>
</form>
Al hacer clic en el botón, se llama a la función con la página actualizada, lo que restablece toda mi solicitud anterior que afecta a la página actual que fue el resultado de la solicitud anterior.
¿Qué debo hacer para evitar que la página se actualice?
javascript
html
litera
fuente
fuente
Respuestas:
Deja que
getData()
devuelva falso. Esto lo arreglará.fuente
onclick
función tiene que devolver falso, nogetData
.type="button"
Es realmente la trampa.Añadir
type="button"
al botón.El valor predeterminado de
type
para un botón essubmit
, que auto publica el formulario en su caso y lo hace ver como una actualización.fuente
return false;
al onclick:onclick="getData(); return false;"
Todo lo que necesitas hacer es poner una etiqueta de tipo y hacer el botón de tipo.
Eso resuelve el problema
fuente
El problema es que desencadena el envío del formulario. Si realiza la
getData
funciónreturn false
, debería detener el envío del formulario.Alternativamente, también puede usar el
preventDefault
método del objeto de evento:fuente
HTML
jQuery
fuente
en lugar de usar la etiqueta del botón, use la etiqueta de entrada. Me gusta esto,
fuente
button type='button'
Si su botón es "botón" predeterminado, asegúrese de establecer explícitamente el atributo type, de lo contrario, WebForm lo tratará como envío por defecto.
si usas js haz esto
fuente
Un método de JavaScript para deshabilitar el botón en sí
Una vez que todos los campos del formulario hayan cumplido sus criterios, puede volver a habilitar el botón
Usar un Jquery será algo como esto
fuente
Por cualquier motivo en Firefox, aunque tengo
return false;
ymyform.preventDefault();
en la función, actualiza la página después de que se ejecuta la función. Y no sé si esta es una buena práctica, pero funciona para mí, insertojavascript:this.preventDefault();
en el atributo de acción.Como dije, probé todas las otras sugerencias y funcionan bien en todos los navegadores, pero Firefox, si tiene el mismo problema, intente agregar el evento prevent en el atributo action
javascript:return false;
ojavascript:this.preventDefault();
. No intente conjavascript:void(0);
lo que romperá su código. No me preguntes por qué :-).No creo que sea una forma elegante de hacerlo, pero en mi caso no tuve otra opción.
Actualizar:
Si recibió un error ... después de que se procesa ajax, elimine la acción del atributo y, en el
onsubmit
atributo, ejecute su función seguida del falso retorno:onsubmit="functionToRun(); return false;"
No sé por qué todos estos problemas con Firefox, pero espero que esto funcione.
fuente
La función de retorno no funciona en todos los casos. Intenté esto:
No funcionó para mí.
Traté de devolver falso dentro de la función y funcionó para mí.
fuente
Estaba enfrentando el mismo problema. El problema es con la
onclick
función. No debería haber ningún problema con la funcióngetData
. Funcionó haciendo que laonclick
función devuelva falso.fuente
Esta es la mejor solución:
Nota: mi código es muy simple.
fuente
Puede usar ajax y jquery para resolver este problema:
fuente