我对这里发生的事情感到困惑。。。它应该是基本的,但我不太明白。
我正在准备一个表格,其中包含一些需要对照数据库进行检查的信息。当表单加载时,我希望javascript为我需要验证的两个输入框运行"模糊"事件。
事情是这样的。当表单加载时,所有数据都会正确显示,但"用户名"one_answers"电子邮件"输入的触发器("模糊")事件不会被触发。然而,如果我手动将光标放置在每个输入中,然后按下tab键,或在框外单击,则会触发"模糊"事件。
我还需要它在页面加载时触发,以警告用户预填充的数据是否与现有数据冲突。。。你知道我做错了什么,或者该怎么做吗?
提前谢谢。
<script type="text/javascript">
$(document).ready(function(){
//Username
$("#username").blur(function(){
$("#usr_available_msg").html("Checking").addClass("error_msg ui-state-error");
});
//email
$("#email").blur(function(){
$("#email_available_msg").html("Checking").addClass("error_msg");
});
//Run validation check on page load
$("#username").trigger("blur");
$("#email").trigger("blur");
});
</script>
为什么不将您的"检查"函数从用户名和电子邮件元素的模糊事件中删除,并将它们变成自己的一个或多个命名函数?然后调用页面加载和模糊事件上的函数(针对这两个元素)。你的代码工作正常,因为当页面加载时,你会触发一些一开始就没有焦点的东西的模糊。
这应该可以按预期工作。
在新文件中尝试以下代码并进行测试。。。如果它工作正常,那么问题出在同一页上的另一个代码块上,这就是导致此问题的原因。
- 创建一个简单的HTML页面
- 向其中添加jQuery脚本文件
- 添加一个id为"testinput"的输入
-
添加以下脚本
$(document).ready(function(){ $("#testInput").blur(function(){ alert(1); }); $("#testInput").trigger("blur"); });