JQuery keyup事件在外部js文件中不起作用

时间:2011-10-27 00:48:50

标签: jquery

好的,这让我感到困惑。 首先是一些背景:

我创建了一个html文件(它实际上是一个php文件,但php只是用于表单验证)我决定创建一些javascript来动态进行一些验证,如检查用户名是否已被使用。一切都很好。然后我决定在网站的其他部分使用这个代码,所以我开始搞乱持有代码的外部js文件。

在原始的html代码中:

<script type="text/javascript">
    $(document).ready(function(){
        if($("#userN").val() == ""){
            $("#testUserName").html("");
        }else{
            ajax_search();
        }
        $("#userN").focusout(function(){
            ajax_search();
        });
            $("#userN").keyup(function(){
        ajax_search();
        });
    } );
</script>

ajax_search()只是向php文件发送请求,以测试userN输入字段中的文本数据。

所以我将它和ajax_search()函数复制到test.js文件中我确保首先调用了jquery.js文件,然后用它中的代码调用了test.js文件。

奇怪的是$(文件).ready运行

$(document).ready(function(){
    alert("test1"); 
    if($("#userN").val() == ""){
        $("#testUserName").html("");
    }else{
        ajax_search();
    }
    $("#userN").focusout(function(){
        ajax_search();
    });
        $("#userN").keyup(function(){
    ajax_search();
    });
    alert("test2");
} );

该代码将显示一个带有test1的弹出窗口,然后是另一个带有test2的弹出窗口,但焦点或键盘将不起作用。

在将所有代码放回html文件中减去ajax_search函数之前,我没有做过任何工作。这是我想要的,但我不明白为什么事件不起作用。我做错了吗?不能这样做吗?

3 个答案:

答案 0 :(得分:1)

使用

$("#userN").on('keyup', function(){ ajax_search(); });

答案 1 :(得分:0)

代码对我来说似乎没问题,你的问题在其他地方就已经存在了。试试这段代码,让我们知道结果 -

$(document).ready(function(){
    if ($("#userN").val() == "") {
        $("#testUserName").html("");
    } else {
        alert("1");
    }
    $("#userN").focusout(function() {
        alert("2");
    });
    $("#userN").keyup(function() {
        alert("3");
    });
}

答案 2 :(得分:0)

我有同样的错误,问题是我在2个不同的文件中实现了document.onkeyup。解决方案:合并或删除其中之一