2012-03-13 47 views
10

Tôi đang sử dụng đoạn mã sau để đính kèm một sự kiện vào nút gửi của một hình thức:Nhận ID của biểu mẫu?

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

Và bạn có thể thấy rằng tôi cũng đang cố gắng để có được id của hình thức, nhưng khi tôi kiểm tra giao diện điều khiển tôi nhận được (an empty string). Tại sao điều đó và làm thế nào tôi có thể nhận được ID của biểu mẫu đúng cách?

Trả lời

27

bạn đã thử?

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

Id của phần tử là thuộc tính, bạn có thể trích xuất bất kỳ thuộc tính nào (kể cả id) bằng .attr().

.val() được sử dụng để trích xuất giá trị của phần tử, không có ý nghĩa trong biểu mẫu.

More Info:

.val()
.attr()

+0

Với các phiên bản mới hơn của jQuery, bạn thường muốn '.prop()' thay vì '.attr()'. Bất kể, ** bạn không cần jQuery để lấy ID của một phần tử. ** http://stackoverflow.com/questions/4651923/when-to-use-vanilla-javascript-vs-jquery –

5

.val() được sử dụng để lấy giá trị của các phần tử biểu mẫu chứ không phải thuộc tính.

Sử dụng .attr():

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

Bạn cũng có thể chiết xuất các DOMElement và sử dụng javascript tinh khiết để có được ID:

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

Hãy thử như sau:

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

Sẽ trở lại với bản chỉnh sửa ngay sau khi tôi kiểm tra điều này.

6

Hãy thử thay thế này.

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

Sẽ giúp bạn.

Các vấn đề liên quan