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 に答える