2

私のページには非常によく似た2つのフォームがあります。

jqueryで簡単な検証を行って、ajaxを使用してデータを使用するphpハンドラーにデータを送信する前に、各フィールドに値があることを確認しています。

フォームの類似性のため、どのフォームが送信されたかを知ることができないため、フォーム コンテナー div の id で区別してみようと思いました

<div name="contactform2" class="form">
    <div width="100%" class="con2">

        <div class="lable">
            <label for="first_name">First Name *</label>
        </div>
        <input  type="text" name="first_name" class="span4">

        <div class="lable">
            <label for="email">Email Address *</label>
        </div>
        <input  type="text" name="email" class="span4">

        <div class="lable">
            <label for="telephone">Contact Number *</label>
        </div>
        <input  type="text" name="telephone" class="span4">

        <div class="lable">
            <label for="comments">Message *</label>
        </div>
        <textarea  name="comments" rows="8" class="span4"></textarea>

        <input type="submit" value="Submit" class="btn btn-success">
    </div>
</div>

実際、フォーム間の唯一の違いは、一方には が<select>含まれていて、もう一方には含まれていないことです。

私のjqueryは次のようになります:

$('input[type=submit]').click(function() {
    var parentname = this.parent('div').attr('name');
    console.log('Form used: ' + parentname);

    var fname = 0,
        email = 0,
        tel = 0;
        comm = 0;

    // Validate data
});

通常は id/class/tagname で選択するので、ここでセレクターを間違えたのではないかと思うので、それが有効かどうかさえわかりません。

誰かが代替案を提案できますか?

4

1 に答える 1

8

.parent()thisは jQuery 関数です。 でラップするのを忘れました$()

var parentname = $(this).parent('div').attr('name');
console.log('Form used: ' + parentname);

.closest()代わりに見てください。

于 2013-02-21T08:07:02.283 に答える