2011-10-27 81 views
3

好吧,这只是让我困惑。 第一一些背景:JQuery键入事件不能在外部js文件中工作

我创建了一个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文件的请求与所述用户N输入字段中的文本以测试数据。

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

奇怪的是。就绪运行

$(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的,但事件的内容或KEYUP另一个弹出是行不通的$(文件)。

没有什么我没有工作,直到我把所有代码放回到html文件减去ajax_search函数。这是我想要的,但我不明白为什么这些事件不会起作用。我做错了什么?难道不能这样做?

+0

定义了哪个'ajax_search()'函数?如果我从$(document).ready()运行ajax_search(),那么你可能在包含'test.js' *之前包含任何文件声明'ajax_search()' – Clive

+0

它实际上在test.js文件中。 );它会运行得很好,键盘不起作用。如果我在.keyup()事件中放置了警报(“您按下了一个键!”),它将不会触发。 – Dreadfulgravy

+0

我忘了提及在Firefox的控制台窗口中没有错误,我没有检查其他浏览器。没有错误,所以它只是没有工作。 – Dreadfulgravy

回答

0

代码对我来说似乎没问题,你的问题可能在其他地方。试试这段代码,并让我们知道结果 -

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

添加该代码我能够看到警告与1,但专注和密码键盘什么都不做?一旦我将它们放入html页面的

相关问题