0

私は、Web サイト用の単純な jQuery フォーム チェッカーを実行しています。Web サイトには、ログイン フォームとサインアップ フォームの 2 つのフォームがあります。私のコードは次のとおりです。

$('.btn').click(function(e) {
    e.preventDefault();
    // DOES SOME ERROR CHECKING HERE
    if { hasError $('div.error').fadeIn() }

    else { $(this).parents('form').submit() }
});

だから私の質問は、ログインボタンとサインアップボタンの両方に btn というクラスがあります。$(this).parents('form ') サインアップ フォームとログイン フォームの両方を取得しますか?

ありがとうございました!

4

6 に答える 6

2

$(this).parents('form')複数の要素を返す場合、HTML マークアップに何か問題があります。また、コードを短くすることを検討してください

$('.btn').click(function(e) {

    // DO SOME ERROR CHECKING HERE

    if (hasError) {
        e.preventDefault();
        $('div.error').fadeIn();
    }
});
于 2012-04-12T07:25:24.450 に答える
2

いいえ $(this) は、それぞれのボタンをクリックしたフォームを取得します。「this」キーワードは要素のオブジェクトを渡すので、このコードが問題なく動作することを心配する必要はありません。

于 2012-04-12T07:23:01.093 に答える
1

彼らにIDを与えて、このように受け取ってください。

$('#btn1).click(....
$('#btn2).click(....
于 2012-04-12T07:28:34.650 に答える
0

HTML フォーム構造を変更して、いずれかのボタンをクリックしたときに対応するフォームを選択できるようにします。

<form action="get">
    <input type="text" value="1" />
    <input type="button" class="btn" />
</form>

<form action="get">
    <input type="text" value="1" />
    <input type="button" class="btn" />
</form>

そしてjQuery:

$(function(){
    $(".btn").click(function(){
        $(this).closest("form").submit();
    });
});

編集

エラー処理のためのより良いセレクター

$(this).closest('form').find('.required').each(function(){
});

http://jsfiddle.net/c9GXZ/6/

于 2012-04-12T07:30:16.973 に答える
0

コードを先に進めたい場合は、jQuery の .parent ()および.parents()メソッドを参照してください。

.parents() メソッドと .parent() メソッドは似ていますが、後者は DOM ツリーを 1 レベル上に移動するだけです。

$(this).closest('form').submit()の代わりに、を使用してみてください$(this).parents('form').submit()。私はユーザーではありませんが、フォーム内にフォームが含まれていると思います (HTML も確認または共有してください)。

于 2012-04-12T07:31:07.110 に答える
0
$('.btn').click(function(e) {
    e.preventDefault();
    // DOES SOME ERROR CHECKING HERE
    if (hasError) {  $('div.error').fadeIn(); } //some syntax change
    else { $(this).closest('form').submit() }  ///will get the nearest form element and stop there and will submit it as per your code...
});

アップデート

これを交換

$('.btn').click(function(e) {

これとともに

$('.btn').on('click',function(e){

これにより、jsfiddle URLで機能しました...

于 2012-04-12T07:31:11.700 に答える