2011-09-24 57 views
1

我遇到了此功能的問題。我無法讓它正確啓動。它確實有效,但是當我在表單中突出顯示數量並更改值(該值最初設置爲1)時,我的庫存水平爲20,當我輸入21時,它將不會顯示消息,除非我按另一個鍵。我究竟做錯了什麼?我嘗試過每一個可能的事件,並且無法弄清楚我做錯了什麼。順便說一句,這是在一個jQuery UI對話框中。爲什麼「按鍵」事件處理程序不一致地觸發?

$('#qty').live('keypress', function() { 
    $('#response').hide(); 
    if($('#qty').val() > stockLevel) { 
    var response = 'You selected more than we have in stock, we have reset your quantity to the maximum number available in stock'; 
    $('#qty').val(stockLevel); 
    $('#response').html(response).show('blind', {}, '200'); 
    return false; 
} 
}); 

感謝您的幫助。

+0

您是否嘗試過按鍵而不是按鍵? –

+0

也許這只是一個例子,但這種驗證需要發生在服務器端。 –

+2

訂單提交時,我會在服務器上仔細檢查它,但我想在發生錯誤之前消除許多錯誤,並提供更流暢的用戶體驗。 – dragboatrandy

回答

1

keypress事件出現了衆所周知的不一致行爲(因爲它沒有在任何標準中定義)。在你的情況下,事件在瀏覽器將文本放入文本框之前觸發。改用keyup事件。

+0

嘗試Keyup,似乎有更好的結果。唯一的一點是,比如stockLevel的值是20,當我清除qty框並輸入3時,它顯示消息?奇怪?另外,我會在服務器端仔細檢查它,但是希望在提交之前提前消除許多問題。 – dragboatrandy

+0

我是否需要將stockLevel的值轉換爲整數? – dragboatrandy

+0

想我想通了。用戶parseFloat(stockLevel),這似乎使結果完美工作。 – dragboatrandy

相關問題