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 的电子邮件,因为我从那里收到了很多垃圾邮件:

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;
}

虽然我在此处粘贴的第二个示例有效,但更彻底地验证电子邮件字段的第一个示例继续返回此错误:

未捕获的类型错误:无法调用未定义的方法“包含”

我无法理解这如何在一个站点而不是另一个站点中工作。我觉得我错过了一些东西,所以如果有人能看到那可能是什么,我将不胜感激。

提前致谢!

4

1 回答 1

1

元素应该有一个id="email"允许选择器:

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