jquery触发器模糊不正常工作?

时间:2012-01-05 17:33:18

标签: jquery

我对这里发生的事感到困惑......它应该是基本的,但我无法弄明白。

我正在预先准备一份表格,其中包含一些需要根据数据库进行检查的信息。当表单加载时,我希望javascript运行我需要验证的两个输入框的“模糊”事件。

这是发生了什么事。当表单正确加载所有数据时,“用户名”和“电子邮件”输入的触发器(“模糊”)事件不会被触发。但是,如果我手动将光标放入每个输入中,然后按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>

2 个答案:

答案 0 :(得分:4)

为什么不将“检查”功能从用户名和电子邮件元素的模糊事件中删除,并将它们放入自己的命名函数中?然后调用页面上的函数加载和模糊事件(对于这两个元素)。您的代码工作正常,因为当页面加载时,您会触发对从未有过焦点开始的事物的模糊。

答案 1 :(得分:1)

这应该按预期工作。

在新文件中尝试以下代码并测试它... 如果它工作正常,那么问题在于同一页面上的另一个代码块导致了这个问题。

  • 创建一个简单的HTML页面
  • 向其添加jQuery脚本文件
  • 添加一个ID为“testinput”的输入
  • 添加以下脚本

    $(document).ready(function(){
        $("#testInput").blur(function(){
            alert(1);
        });
    
        $("#testInput").trigger("blur");
    });