好吧,這只是讓我困惑。 第一一些背景: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函數。這是我想要的,但我不明白爲什麼這些事件不會起作用。我做錯了什麼?難道不能這樣做?
定義了哪個'ajax_search()'函數?如果我從$(document).ready()運行ajax_search(),那麼你可能在包含'test.js' *之前包含任何文件聲明'ajax_search()' – Clive
它實際上在test.js文件中。 );它會運行得很好,鍵盤不起作用。如果我在.keyup()事件中放置了警報(「您按下了一個鍵!」),它將不會觸發。 – Dreadfulgravy
我忘了提及在Firefox的控制檯窗口中沒有錯誤,我沒有檢查其他瀏覽器。沒有錯誤,所以它只是沒有工作。 – Dreadfulgravy