Delegado para capturar dos envíos de formulario
Frecuentes
Visto 91 veces
0
Usar la siguiente función para capturar dos envíos de formularios generados dinámicamente, pero no impide su envío.
$('body').delegate('.edit_faq, .new_faq', 'submit', function(e){
e.preventDefault();
//voodoo
});
Estaba usando lo siguiente, usando live
. Esto funciona, pero en vivo se deprecia y el resultado final es que este código termina en un complemento flexible.
$('.edit_faq').add('.new_faq').live('submit', function(e){
e.preventDefault();
//magic
});
3 Respuestas
1
Lo que has escrito está funcionando.
comprobar:
presione ejecutar como jsfiddle a veces necesita una actualización antes de enviar las pruebas.
Solo he podido probarlo con chrome 23.
Respondido el 05 de Septiembre de 12 a las 11:09
0
Trata on cuál es la forma recomendada, y devolver falso:
$('body').on('submit', '.edit_faq, .new_faq', function(e){
e.preventDefault();
//Do your stuff here.
});
En cuanto a por qué todavía se produce el envío, ¿tal vez tenga un error JS en algún lugar de la página?
Respondido el 05 de Septiembre de 12 a las 11:09
¿Por qué devolver false y preventDefault? - Pelusa leve
Mira aquí: stackoverflow.com/questions/1357118/… - JAR.JAR.frijoles
Eso no funciona. Además, ese enlace aclara que en este caso return false
no es necesario, como sospechaba. - Pelusa leve
0
FIJADO--
El problema era que el código requería estar envuelto en un documento onReady:
$(document).ready(function(){
$('body').on('submit', '.edit_faq, .new_faq', function(e){
e.preventDefault();
//voodoo
});
})
Se me ocurre que dado que en vivo no requería el ready, ¿quizás esto sigue estando mal?
Respondido el 05 de Septiembre de 12 a las 11:09
esta es la solución también live requiere document.ready también si no recuerdo mal. - vinczemarton
En el primero, está adjuntando los controladores de eventos a body
que probablemente no exista hasta después de que se cargue el contenido DOM. En el segundo, los manipuladores se unen a la document
sí mismo. - Dennis
Entonces, ¿puedo evitar la necesidad de onready adjuntando a $(documento)? - Pelusa leve
No creo que deba omitirlo ya que no habrá garantía de que funcione de manera consistente en todos los navegadores. - vinczemarton
@SoonDead Así es como live
funciona, por lo que funcionará en todos los navegadores. - Dennis
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript jquery delegates jquery-events or haz tu propia pregunta.
Esto debería funcionar. ¿Qué versión de jquery estás usando y qué navegador? Una muestra en jsfiddle facilitaría la respuesta, y también hacer un caso de prueba puede descubrir errores. - vinczemarton