解决了
Mailcheck 使用“on”方法,该方法在我使用的过时版本的 JQuery 中不可用。谢谢库菲和马丁。
我是 Javascript/Jquery 的初学者,我一直试图让它工作。
我的网站上有一个工作表单,我想在其中为流行的电子邮件域添加此客户端拼写检查。电子邮件地址的文本字段的 id 只是“电子邮件”,所以我做了这个小改动(大写 E)。
所以我的代码看起来像这样......带有一些测试语句。
<script>
document.write("test0");
document.getElementById('testspan').innerHTML = 'test3';
var domains = ['hotmail.com', 'gmail.com', 'aol.com'];
$('#Email').on('blur', function() {
$(this).mailcheck({
domains: domains, // optional
suggested: function(element, suggestion) {
// callback code
document.getElementById('testspan').innerHTML = 'test4';
document.write("test1");
},
empty: function(element) {
// callback code
document.write("test2");
}
});
});
</script>
文本“test0test3”确实按预期出现,类似于我执行 PHP 回显时会发生的情况。
但是当焦点离开我的电子邮件文本框时,什么都没有发生。
我不知道我是否提供了足够的详细信息,以便有人确定我哪里出错了......
我真的不明白我应该在标记为“//回调代码”的地方写什么。我是否需要手动提供代码,使“您的意思是……”文本出现在他们的屏幕截图中?
谢谢你,库菲和马丁。 我遵循了 Kufi 的代码,并且还插入了
<span id="suggestedEmail"></span>
在电子邮件文本输入元素之后。但什么也没有发生。有人可以建议我可以在回调函数中编写一个合适的测试语句,以确定是否正在执行代码路径。我有一种感觉不是。
更新 3
再次感谢 Kufi 和 Martin,
即使在制作了一个最小的 .HTML 文件进行测试之后,我也无法让它工作......我觉得现在,有人能够发现我犯的错误。这是我的整个测试文件。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Testing mailcheck</title>
<script type="text/javascript" src="js/jquery-1.3.2.js"></script>
<script type="text/javascript" src="js/jquery.mailcheck.js"></script>
</head>
<body>
<form id="form1" name="form1" method="post" action="contactus_mail.php">
Name: <input name="name" type="text" id="name" size="30" /> </br>
Email: <input name="email" type="text" id="email" size="30" /> <span id="suggestedEmail"></span> </br>
Subject: <input name="subject" type="text" id="subject" size="72" value="" /> </br>
<input name="Submit" type="submit" value="Submit"/>
</form>
</br>
<span id="testspan1"></span>
</br>
<span id="testspan2"></span>
</br>
<script type="text/javascript">
$("#testspan1").html("test1");
$(function() {
var domains = ['hotmail.com', 'gmail.com', 'live.com', 'yahoo.com'];
$("#email").on('blur', function() {
$(this).mailcheck({
domains: domains, // optional
suggested: function(element, suggestion) {
// callback code
$("#suggestedEmail").html("Did you mean " + suggestion.full);
},
empty: function(element) {
// callback code
document.write("empty was called");
}
});
});
});
$("#testspan2").html("test2");
</script>
</body>
</html>
除了两个外部 JS 文件的可访问性之外,我还有什么需要检查的吗?jQuery版本?
解决了!
我得到:
Uncaught TypeError: Object #<Object> has no method 'on'
在看起来像这样的行:
$("#email").on('blur', function() {
当我从使用 JQuery 1.3.2 切换到当前的 1.7.2 时,这种情况就消失了。