2011-10-27 147 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頁面的

相關問題