2010-01-04 148 views
1

我有一個使用jquery執行的ajax腳本,當輸入文本字段使用keyup更改。這部分工作正常。但是,當表單自動加載此輸入文本字段中的某些文本時,我也希望觸發相同的鍵入事件。jquery觸發一個事件

我自動加載表單文本字段通過使用PHP填充表單從URL(獲取請求)。

我的HTML代碼:

<input id="code" name="code" type="text" /> 

我的JS:

$(document).ready(function() { 
    // doesn't work 
    // i want to execute the code in the function specified within $('#code').keyup(function() {} below. nothing happens here. 
    if ($('#code').val() != '') { 
    $('#code').trigger('keyup'); 
    } 

    // works fine 
    $('#code').keyup(function() { 
    // function code 
    } 
} 

不知道如果我這樣做的權利。如果有人能幫我解決這個問題,我將不勝感激。謝謝! :)

回答

5

需要觸發keyup(或者與$('#code').trigger('keyup')$('#code').keyup()),之後綁定事件處理程序,而不是之前。

$(document).ready(function() { 
    $('#code').keyup(function() { 
     // function code 
    } 

    if ($('#code').val() != '') { 
     $('#code').trigger('keyup'); 
    } 
} 
+0

非常感謝!我幾分鐘前才意識到這種情況。再次來到網站,說我已經解決了,但意識到你已經看到了問題。再次感謝!我花了3個小時試圖弄清楚這一點。 :S – Lyon

1

您是否嘗試過只需撥打.keyup()而不是.trigger('keyup')

另一件事你可以做的是抽象的,你要調用到另一個函數和調用,而不是觸發點擊的代碼:

$('#code').keyup(myFunction); 
+0

嗨賈森,這正是我想要做的,通過將代碼移入一個函數並從那裏調用它。不用說,我遇到了其他問題,比如我如何確保函數中的「this」指的是$('#code')。在函數中聲明var code = $('#code')是否可以解決該問題?不管怎麼說,還是要謝謝你! =) – Lyon

+0

對不起,傑森,會指定你的答案是正確的,但K Prime對於像我這樣的初學者來說更加清晰。 :) 謝謝! – Lyon

+0

沒關係,他是對的。真高興你做到了! – Jason