Estoy usando .submit() para detectar cuando se envía un formulario, pero en lugar de realizar la función adjunta, está refrescando la página.jQuery form.submit() página de actualización en lugar de enviar
Estoy creando una herramienta para dibujar diagramas de árbol genealógico (usando listas anidadas) en http://chris-armstrong.com/familytree.
Para agregar un descendiente, active los controles y agrega <li class="add_member">+</li>
a cada <ul>
(o generación).
Al hacer clic en un elemento <li class="add_member">+</li>
, que sustituye a la +
con un <form class="add_member>
que consiste en un <input>
y un botón <submit>
. Luego utilicé $("form.add_member").submit()
para detectar cuándo se hace clic en el botón Enviar, y debe luego reemplazar el formulario con el contenido de <input>
, sin embargo, en este punto, simplemente actualiza la página (y agrega un? A la URL).
¿Alguna idea de lo que estoy haciendo mal? He adjuntado toda la función a continuación.
function addAddListeners() {
$('li.add_member').click(function(){
//create input form
$(this).html("<form class='add_member'><input id='fn_' placeholder='Name' required autofocus /><button type='submit'>Add</button></form>")
//listen for input form submission
$("form.add_member").submit(function(){
//if input form isn't blank, create new li element with content of form, else go back to the add_member li
if($('form.add_member').val()) {
$(this).replaceWith('<li><span class="vcard" title="Click to edit this members details"><span class="edit fn">'+$('input#fn_').val()+'</span></span><ul><li class="add_member">+</li></ul></li><li class="add_member">+</li>');
addEditListeners();
addAddListeners();
} else {
alert("no change");
$(this).html("+");
}
});
});
}
EDITAR: Adding return false; detiene la actualización de la página, pero la función adjunta a .submit() no parece activarse, ¿alguna idea de por qué?
añadir retrun falsa al final ... de la forma presente la función /// – kobe
añadí la respuesta como un comentario en primer lugar, Tengo que pasar para contestar/ – kobe
@gov lo siento, todos respondieron al mismo tiempo, así que fui con el que dio más detalles (pensando en lo que sería más útil para las personas que pueden estar buscando la pregunta en el futuro). Sin embargo, gracias por tu ayuda, ¿no crees que tendrías una idea sobre el segundo problema? –