2011-09-24 25 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

相关问题