web-dev-qa-db-ja.com

フォームのIDを取得しますか?

次のコードを使用して、フォームの送信ボタンにイベントをアタッチしています。

$('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を適切に取得するにはどうすればよいですか?

13
Roland

やってみました?

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

要素のIDは属性です。attr()を使用して、任意の属性(IDを含む)を抽出できます。

.val()は要素の値を抽出するために使用されますが、フォームでは意味がありません。

詳細:

。val()
。attr()

31
vdeantoni

代わりにこれを試してください。ページに単一のフォームがあると仮定します。

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

あなたを助けるでしょう。

8
Milan

。val() は、属性ではなくフォーム要素の値を取得するために使用されます。

。attr() を使用します。

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

また、DOMElementをextractし、純粋なJavaScriptを使用してIDを取得することもできます。

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

以下を試してください:

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

これをテストしたらすぐに編集を加えて戻ってきます。