2012-03-13 18 views
10

używam następujący kod, aby dołączyć zdarzenie do przycisku złożenia formularza:Uzyskaj identyfikator formularza?

$('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; 
}); 

i widać, że jestem również stara się uzyskać identyfikator formularza, ale kiedy sprawdzić konsola otrzymuję (an empty string). Dlaczego tak jest i jak mogę poprawnie pobrać identyfikator formularza?

Odpowiedz

27

próbowałeś?

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

Identyfikator elementu jest atrybutem można wydobyć atrybutu (włącznie z identyfikatorem) stosując .attr().

.val() służy do wyodrębnienia wartości elementu, co nie ma sensu w formie.

Więcej informacji:

.val()
.attr()

+0

W nowszych wersjach jQuery zwykle potrzebujesz '.prop()' zamiast '.attr()'. Bez względu na to, ** nie potrzebujesz jQuery do pobrania identyfikatora elementu. ** http://stackoverflow.com/questions/4651923/when-to-use-vanilla-javascript-vs-jquery –

5

.val() służy do uzyskania wartości elementów formularza, a nie atrybutów.

Zastosowanie .attr():

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

Można również ekstrakt DOMElement i stosowanie czystego javascript, aby uzyskać identyfikator:

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

Spróbuj wykonać następujące czynności:

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

wrócimy z edycji tak szybko, jak to sprawdzić.

6

Spróbuj tego zamiast tego.

Pomożemy Ci.