14

我正在使用以下代码将事件附加到表单的提交按钮:

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

您可以看到我也在尝试获取表单的 id,但是当我检查控制台时,我得到了(an empty string). 为什么会这样,我怎样才能正确获取表单的 ID?

4

4 回答 4

34

你有没有尝试过?

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

元素的 id 是一个属性,您可以使用 .attr() 提取任何属性(包括 id)。

.val() 用于提取元素的值,这在表单中没有任何意义。

更多信息:

.val()
.attr()

于 2012-03-13T13:44:46.047 回答
8

试试这个。假设页面上有一个单一的表单。

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

会帮你的。

于 2014-07-07T07:28:49.083 回答
6

.val()用于获取表单元素的值,而不是属性。

使用.attr()

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

您还可以提取DOMElement 并使用纯 javascript 来获取 ID:

var user_id = $(this).closest("form[id]")[0].id;
于 2012-03-13T13:44:29.520 回答
1

尝试以下操作:

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

一旦我对此进行测试,将立即进行编辑。

于 2012-03-13T13:45:01.500 回答