注意请参阅此问题了解一些背景知识...
所以我的(非常基本的)表单验证正在工作 - 有点。
在检查电子邮件地址字段的输入值时,我想确保电子邮件地址有一个值(即不是空白)并且包含@
和.
字符,所以我这样做了......
<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;
}
虽然我在此处粘贴的第二个示例有效,但更彻底地验证电子邮件字段的第一个示例继续返回此错误:
未捕获的类型错误:无法调用未定义的方法“包含”
我无法理解这如何在一个站点而不是另一个站点中工作。我觉得我错过了一些东西,所以如果有人能看到那可能是什么,我将不胜感激。
提前致谢!