¿Qué tiene de malo esto?
HTML:
<form action="http://localhost:8888/bevbros/index.php/test" method="post" accept-charset="utf-8" id="cpa-form" class="forms">
<input type="text" name="zip" value="Zip code" id="Zip" class="required valid">
<input type="submit" name="Next" value="Submit" class="forms" id="1">
</form>
jQuery:
$("#cpa-form").submit(function(e){
e.preventDefault();
});
jquery
preventdefault
djreed
fuente
fuente
alert()
en el controlador de envío se llama? De lo contrario, podría ser que hay un error en su script que impide que el controlador de eventos esté conectado correctamente. ¿Algo en la consola de error?Respuestas:
Prueba esto:
fuente
e.preventDefault()
funciona bien con un envío de formulario, el problema radica en otra parte del código del OP. El usoreturn false
podría tener consecuencias no deseadas.Use la nueva sintaxis de evento "on".
Cita: https://api.jquery.com/on/
fuente
$(document).ready()
) ¿Cómo hago que funcione?true
ofalse
? ¿Puedes recrear tu código en jsfiddle.net y enviar el enlace? Intente agregar unalert()
para confirmar que la función se está activando. Algunas personas han informado que agregare.stopPropagation();
despuése.preventDefault();
detiene otros disparos encadenados.$('#myFormID').validationEngine('validate')
desde jQuery ValidationEngine tan variablesvalid
, para comprobar la entrada de carnero es una dirección válida de correo electrónico. Sin embargo, quiero que evite el comportamiento predeterminado de cualquier manera; nopreventDefault
tienen que estar dentro del bloque if, no antes?preventDefault
está dentro del si no es válida bloque para detener la presentación del formulario. En otras palabras, si es válido , use el comportamiento predeterminado del formulario.Creo que las respuestas anteriores son correctas, pero eso no indica por qué el
submit
método no funciona.Bueno, el
submit
método no funcionará si jQuery no puede obtener elform
elemento, y jQuery no da ningún error al respecto. Si su secuencia de comandos se coloca en la cabecera del documento, asegúrese de que el código se ejecuta después de queDOM
esté listo . Entonces,$(document).ready(function () { // your code here // });
resolverá el problema.La mejor práctica es, siempre coloque su secuencia de comandos en la parte inferior del documento.
fuente
Esta es una pregunta antigua, pero la respuesta aceptada aquí realmente no llega a la raíz del problema.
Puedes resolver esto de dos maneras. Primero con jQuery:
O sin jQuery:
No necesita usar
return false
para resolver este problema.fuente
fuente
fuente
Su código está bien solo necesita colocarlo dentro de la función de listo.
fuente
También puede probar este código si, por ejemplo, luego ha agregado formularios dinámicos. Por ejemplo, cargó una ventana asíncrona con ajax y desea enviar este formulario.
Caso 1, versión estática: si solo tiene unos pocos oyentes y su formulario para manejar está codificado, puede escuchar directamente en "nivel de documento". No usaría los oyentes a nivel de documento, pero trataría de profundizar en el árbol de la fatalidad porque podría conducir a problemas de rendimiento (depende del tamaño de su sitio web y su contenido)
O
O
O
fuente
.live()
está en desuso desde jQuery 1.7 y se elimina desde 1.9. Usar en su.on()
lugar.Hola buscó una solución para hacer que un formulario Ajax funcione con el Administrador de etiquetas de Google (GTM), el retorno falso impidió la finalización y enviar la activación del evento en tiempo real en Google Analytics fue cambiar el retorno falso por e.preventDefault () ; que funcionó correctamente sigue el código:
fuente
e.preventDefault () funciona bien solo si no tiene problemas con sus javascripts, verifique sus javascripts si e.preventDefault () no funciona, es probable que otras partes de su JS no funcionen también
fuente
Bueno, encontré un problema similar. El problema para mí es que el archivo JS se carga antes de que ocurra el render DOM. Así que mueve tu
<script>
al final de la<body>
etiqueta.o usar diferir.
así que
e.preventDefault()
tenga la seguridad de que debería funcionar.fuente