Problema : la función que quiero invocar solo cuando se hace clic en el botón Enviar se invoca inmediatamente en la carga del documento/página. Solo quiero que la función se active cuando hago clic en el botón Enviar.
Esta función requiere un parámetro formId . Tengo muchos formularios con diferentes formId . Quiero reutilizar la función y simplemente proporcionarle el formId como argumento. La identificación del formulario será utilizada por alguna llamada ajax .
Ejemplo de reutilización:
buttonA.on('click', loadPageOfSelectedNavItem('#myFormIdA') ); buttonB.on('click', loadPageOfSelectedNavItem('#myFormIdB') ); buttonC.on('click', loadPageOfSelectedNavItem('#myFormIdC') ); //.. and so on..Investigué un poco en SO y encontré preguntas y respuestas relacionadas donde sugerían simplemente proporcionar el nombre de la función sin paréntesis.
Como en buttonA.on('click', loadPageOfSelectedNavItem);
Sin embargo, no funcionará para mi propósito porque necesito proporcionar/pasar el formId como argumento a la función.
¿Puede sugerir posibles soluciones?
A continuación se muestra mi código actual.
(function(){ buttonA.on('click', loadPageOfSelectedNavItem('#myFormIdA')); //this fires the function on document ready buttonB.on('click', loadPageOfSelectedNavItem('#myFormIdB')); //this fires the function on document ready }); function loadPageOfSelectedNavItem(formId){ var form = $(formId); $.ajax({ url : form.attr('action'), data: form.serialize(), type: "post", success: function(response, status, xhr){ $('#divContainer').html(response); //response is in html format }, error: function(error){ console.log(error); } }); }Gracias.
¿Qué tal algo como:
buttonA.click({id:"#myFormIdA"}, function(event) { loadPageOfSelectedNavItem(event.data.id) });