注意请参阅this question了解一些背景信息......
所以我的(非常基本的)表单验证工作正常。
检查电子邮件地址字段的输入值时,我想确保电子邮件地址有一个值(即非空白)并包含@
和.
个字符,所以我这样做了...
<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')
,但后来又收到错误,说该元素没有方法'child'
我是根据我之前创建的一个表单写的,我使用了相同的原理来阻止来自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;
}
虽然我在此处粘贴的第二个示例有效,但是第一个更彻底验证电子邮件字段的示例仍然会返回此错误:
未捕获的TypeError:无法调用未定义的方法'contains'
我无法理解这在一个网站中是如何工作的,而不是另一个网站。我觉得我错过了一些东西,所以如果有人能看到那可能是什么,我会很感激。
提前致谢!
答案 0 :(得分:1)
元素应该有id="email"
以允许选择器:
$('.' + parentname.attr('class') + ' #email')