2012-03-13 17 views
10

私は、フォームの送信ボタンにイベントをアタッチするには、次のコードを使用しています:フォームの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を正しく取得するにはどうすればよいですか?

答えて

27

あなたは試したことがありますか?

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

要素のid属性があり、あなたは)(.ATTRを使用して(IDを含む)任意の属性を抽出することができます。

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

詳細:

.val()
.attr()

+0

新しいバージョンのjQueryでは、通常、.attr()の代わりに '.prop()'が必要です。それにかかわらず、要素のIDを取得するために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のとIDを取得するには、純粋なJavaScriptを使用することができます。

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

は、以下のことを試してみてください。

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

は、すぐに私はこれをテストとして編集して戻ってきます。

6

代わりにこれを試してください。

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

お手伝いします。

関連する問題