未捕获的类型错误:无法调用未定义的方法“contains”
2013-02-21
1892
注意 请参阅 这个问题 了解一些背景信息……
所以我的(非常基本的)表单验证是有点起作用的。
在检查电子邮件地址字段的输入值时,我想确保电子邮件地址有一个值(即不为空)并且包含
@
和
.
字符,所以我这样做了……
<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;
}
虽然我在此处粘贴的第二个示例有效,但第一个更彻底地验证电子邮件字段的示例不断返回此错误错误:
Uncaught TypeError: Cannot call method 'contains' of undefined
我不明白为什么这在一个网站上有效,而在另一个网站上无效。我感觉我遗漏了一些东西,所以如果有人能知道那可能是什么,我将不胜感激。
提前致谢!
1个回答
元素应该有一个
id="email"
以允许选择器:
$('.' + parentname.attr('class') + ' #email')
WheretheresaWill
2013-02-21