0

少し背景については、 この質問を参照してください...

したがって、私の(非常に基本的な)フォーム検証は機能しています-一種の.

@メールアドレスフィールドの入力値をチェックするとき、メールアドレスに値があり(つまり、空白ではない)、および文字が含まれていることを確認したい.ので、これを行いました...

<div width="100%" class="con1">

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

</div>

<script>

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

    var email = 0,

    // Validate email
    if ($('.' + parentname.attr('class') + ' #email').val() == '')
    {
        alert('Please enter a valid email address');
    }
    else
    {
        if (($('.' + parentname.attr('class') + ' #email').val().contains('@')) && ($('.' + parentname.attr('class') + ' #email').val().contains('.')))
        {
            email = 1;
        }
        else
        {
            alert('Please enter a valid email address');
        }
    }
});
</script>

少し奇妙に見えますが、上記のリンクされた質問で述べたように複雑であるため、セレクターについて少し異なる考え方をする必要がありました。

基本的$('.' + parentname.attr('class') + ' #email')には書くことと同じです($('.con1 #email')HTML構造に基づいて正しいと信じているセレクターとして使用している場合.

操作を試みました$('.' + parentname.attr('class').child('#email')が、要素に「子」メソッドがないというエラーが表示され続けました

yahoo.com からのスパムが大量に届いていたので、yahoo.com からのメールをブロックするために、同じ原則を実際に使用して作成した以前のフォームに基づいて、これを書きました。

if ($("#contact-email").val().contains("yahoo.com")) {
     $(".errmsg").text("Domain yahoo.com has been banned due to excessive spam, please use another domain.");
}
else
{
    email = 1;
}

ここに貼り付けた 2 番目のサンプルは機能しますが、電子メール フィールドをより徹底的に検証する最初のサンプルは、このエラーを返し続けます。

Uncaught TypeError: undefined のメソッド 'contains' を呼び出せません

これがどのようにあるサイトで機能し、別のサイトでは機能しないのか理解できません。何かが足りないような気がするので、誰かがそれを見てくれるとありがたいです。

前もって感謝します!

4

1 に答える 1

1

要素にはid="email"、セレクターを許可する が必要です。

$('.' + parentname.attr('class') + ' #email')
于 2013-02-21T09:22:00.410 に答える