0

/我在 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 会导致发布和刷新(所有浏览器)。无论我将数据输入框中并按 Enter 键的顺序如何,都会发生这种情况。

有没有人解释我做错了什么以及如何正确做?

4

2 回答 2

3

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

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

...问题似乎得到了解决。

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

于 2012-08-03T22:18:05.497 回答
0

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

于 2012-08-03T22:21:24.933 回答