2010-05-23 24 views
28

Intento obtener el objeto jQuery de un botón de envío en un formulario específico (hay varios formularios en la misma página).Cómo encontrar el botón de enviar en un formulario específico en jQuery

Logré obtener el elemento de formulario en sí. Se parece a esto:

var curForm = curElement.parents("form"); 

El elemento actual tiene el contexto HTMLInputElement. Las varias técnicas que intentó que el elemento según presentar de la forma:

var curSubmit = curForm.find("input[type='submit']"); 
var curSubmit = $(curForm).find("input[type='submit']");  
var curSubmit = curForm.find(":submit"); 
var curSubmit = $(curForm).find(":submit");  
var curSubmit = $(curSubmit, "input[type='submit']"); 

el resultado es siempre el mismo (y muy extraño). El resultado que obtengo es el mismo elemento que "curElement".

Entonces, ¿cómo puedo obtener el botón de enviar correcto?

+0

Eso debería funcionar. ¿Puedes mostrar un ejemplo, tal vez en http://JSBin.com? – SLaks

Respuesta

51

El siguiente debería funcionar:

var submit = curElement.closest('form').find(':submit'); 
+6

+1 por: enviar! Mucho más fácil de usar que los selectores de atributos. –

13

esto debería funcionar:

var curSubmit = $("input[type=submit]",curForm); 

EDIT: Nota' los desaparecidos en el selector

1

Por cierto: Última selector ve raro. Selecciona cada curSubmit (¿hm?) En cada etiqueta input[type=submit]. Puede ser que usted quiere decir var curSubmit = $("input[type=submit]", curForm);

0

En caso de que quiera encontrar el botón de la presente Después de enviar el formulario, puede encontrar útil lo siguiente ... Lo utilizo para desactivar el botón Enviar después de que se envió el formulario para evitar varios clics.

$("form").submit(function() { 
    if ($(this).valid()) { // in case you have some validation 
    $(this).find(":submit").prop('disabled', true); 
    $("*").css("cursor", "wait"); // in case you want to show a waiting cursor after submit 
    } 
}); 
2

Esto funciona para mí:

var curSubmit = $("input[type=submit]",this); 

donde esto significa forma actual presentó

por ej. para obtener el nombre del botón enviado y todas las entradas enviadas

$("form").on("submit", function(event) { 
    event.preventDefault(); 
    var data = $(this).serialize(); //all input variables 
    console.log(data); //print data in console 
    var submit = $("input[type=submit]",this).attr('name'); 
    alert(submit); // name of submit button 
}); 
+0

En el primer ejemplo ... ¿no debería ser '$ (esto)' en lugar de simplemente 'esto'? – Pixel1002

+0

@ Pixel1002 el $ está alrededor de esto y "input [type = submit]" –

Cuestiones relacionadas