event.preventDefault()无法处理两个输入框中的第二个

时间:2012-08-03 22:11:17

标签: jquery html input

/我在html中有两个输入框,每个输入框都在一个单独的表单元素集中:

<input id="RecommendationDaysInputTextBox" class="NumberOfDaysInputTextBox" name="RecommendationDaysInputTextBox" type="text" value="90" />
<input id="ReviewDaysInputTextBox" class="NumberOfDaysInputTextBox" name="ReviewDaysInputTextBox" type="text" value="360" />

我希望在输入数据后用户点击回车键时停止默认传播(我用“更改”和“键盘”更正)。

我正在使用它:

$(".NumberOfDaysInputTextBox").keyup(function(e) {
    if (e.which == 13) {
        e.preventDefault();
        /* e.stopPropagation(); */
        $(this).trigger("change");
    }
});​

它正在开发第一个盒子而不是第二个盒子。点击第二个输入会导致发布和刷新(所有浏览器)。无论我将数据输入框并按Enter键,都会发生这种情况。

有没有人能解释我做错了什么以及如何正确地做到这一点?

2 个答案:

答案 0 :(得分:3)

问题,我想,是在keydown上立即触发提交。如果您改为将函数设置为在keydown上执行...

$(".NumberOfDaysInputTextBox").keydown(function(e)
{
    if (e.which == 13)
    {
        e.preventDefault();
        e.stopPropagation();
        $(this).trigger("change");
    }
});​

......问题似乎已经解决了。

这是一个小提琴http://jsfiddle.net/jthGY/

答案 1 :(得分:0)

您不想使用keyup,因为它已经触发了该点的默认操作。参考:http://www.quirksmode.org/dom/events/keys.html。考虑使用keydown。