2012-03-13 7 views
10

Sto utilizzando il seguente codice di allegare un evento per il pulsante di invio di un modulo:Ottieni l'ID di un modulo?

$('form.manage-users-form').on('click','button.special',function() { 

    if ($(this).hasClass('selected')){ 
     console.log('This user is already special'); 
    } else { 

     $(this).parent().find('button').removeClass('selected'); 
     $(this).addClass('selected'); 

     var user_id = $(this).closest("form[id]").val(); 

     console.log('This user is now special'); 
     console.log(user_id); 
    } 
    return false; 
}); 

E si può vedere che sto anche cercando di ottenere l'id della forma, ma quando controllo la console ottengo (an empty string). Perché è e come posso ottenere correttamente l'ID del modulo?

risposta

27

Hai provato?

var user_id = $(this).closest("form").attr('id'); 

L'id dell'elemento è un attributo, è possibile estrarre qualsiasi attributo (incluso l'id) utilizzando .attr().

.val() è utilizzato per estrarre il valore dell'elemento, che non ha senso in un modulo.

Ulteriori informazioni:

.val()
.attr()

+0

Con le versioni più recenti di jQuery, di solito si desidera '.prop()' invece di '.attr()'. Indipendentemente da ciò, ** non hai bisogno di jQuery per recuperare l'ID di un elemento. ** http://stackoverflow.com/questions/4651923/when-to-use-vanilla-javascript-vs-jquery –

5

.val() viene utilizzato per ottenere il valore di elementi del modulo, non attributo.

Uso .attr():

var user_id = $(this).closest("form[id]").attr('id'); 

È possibile anche estratto il DOMElement e utilizzare javascript puro per ottenere l'ID:

var user_id = $(this).closest("form[id]")[0].id; 
1

Prova il seguente:

var user_id = $(this).closest("form").attr("id"); 

Will essere di nuovo con una modifica al più presto i test questo.

6

Prova questo.

var formid = $('form').attr('id'); 

Vi aiuterà.

Problemi correlati