2015-04-24 23 views
-1

我有這個ajax調用,假設在特定文本框上按下某個鍵時運行。一旦進入通話,它會運行一個可以觸發警報的功能。但是,它不起作用。也許這是因爲我用舊論壇帖子撰寫了電話會議作爲參考。假設,我在我的測試中調用了jquery庫的原因,但我沒有在這裏發佈它。Ajax調用沒有運行在Kydydown

這是我到目前爲止已經試過:

<script> 
     $("#<% =tb.ClientID%>").keydown 
     (
      function() 
      { 
       debugger; alert("hello"); 
      } 
     ); 
</script> 

<body> 

    <asp:TextBox Id = "tb" runat = "server"/> 

</body> 

我是新來的這些類型的呼叫。我對js函數非常熟悉,但我從來沒有這樣做過。任何解釋和建議,將不勝感激。

+0

您的代碼嘗試選擇代碼運行時不存在的元素。 –

+2

將您的腳本移動到'body'的底部或將其包裝在DOM就緒語句中。現在,您的腳本在ID爲'tb'的元素已加載到頁面之前執行。 – tymeJV

+0

@tymeJV這很有道理,我會試一試。謝謝 –

回答

2

HTML是逐行處理的。因此,在處理該script標記的內容時,它尚未處理任何進一步處理的內容,例如body標記或其內容。

script的內部,您正在運行$("#<% =tb.ClientID%>")。它會嘗試通過ID找到元素,但由於body尚未處理,因此不會產生任何結果。沒有結果,它沒有任何設置.keydown的監聽器。

在這種情況下,使用jQuery的$(document).ready函數或其等價物對代碼變得非常重要和至關重要。 $(document).ready接受一個函數,並且在執行該代碼之前它會一直等到DOM完全加載。因此,在$(document).ready中放入$("#<% =tb.ClientID%>").keydown....將確保元素有機會在連接.keydown偵聽器之前進入DOM。

你可以找到$(document).ready()here的文檔。

+0

應該是這樣的'$(document).ready((「#<%= tb.ClientID%>」)。keydown(function(){});'? –

+0

@JoséCorretjer-Gómez - Close, DOM準備好了一個函數,然後你的代碼進入 - '$(document).ready(function(){//你的手柄在這裏});' – tymeJV

+0

@tymeJV對不起,我試了一下,但它仍然沒有。工作這是我寫的'$(文件)。就緒 ( 函數(){ $( 「#<%= tb.ClientID%>」)的keydown ( 函數(){ 調試 。 alert(「hello」); } ); } );' –