2012-03-13 2 views
10

Я использую следующий код, чтобы прикрепить событие на кнопку отправки в виде:Получите идентификатор формы?

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

И вы можете видеть, что я также пытаюсь получить идентификатор формы, но когда я проверяю на консоли я получаю (an empty string). Почему это и как я могу получить идентификатор формы?

ответ

27

вы пробовали?

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

Идентификатор элемента является атрибутом, вы можете извлечь любой атрибут (включая идентификатор) с помощью .attr().

.val() используется для извлечения значения элемента, что не имеет смысла в форме.

Дополнительная информация:

.val()
.attr()

+0

С более новыми версиями jQuery вы обычно хотите '.prop()' вместо '.attr()'. Независимо от того, ** вам не нужно jQuery для получения идентификатора элемента. ** http://stackoverflow.com/questions/4651923/when-to-use-vanilla-javascript-vs-jquery –

5

.val() Используется для получения значения элементов формы, а не атрибута.

Использование .attr():

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

Вы можете также экстракт DOMElement и использовать чистый JavaScript для получения ID:

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

Попробуйте следующее:

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

Вернется с редактирования, как только я проверить это.

6

Попробуйте это вместо этого.

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

Поможем вам.

Смежные вопросы