2012-08-03 82 views
0

/I有两个输入框,在每一个单独的表格元件组,在html:event.preventDefault()不工作的两个输入框

<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"); 
    } 
});​ 

这是工作的第一箱而不是第二。点击第二个输入会导致发布并刷新(所有浏览器)。无论我将数据输入框中并按回车键的顺序,都会发生这种情况。

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

+0

一切看起来都很好。在事件订阅之前尝试'alert($(“。NumberOfDaysInputTextBox”).length)'。 – kirilloid 2012-08-03 22:15:43

+0

在http://jsfiddle.net上发布问题将使其他人可能会帮助你更有可能 – 2012-08-03 22:16:25

+0

'$('。myForm。')。submit(function(e){e.preventDefault});'。你仍然可以保持你的'keyup'事件监听器,但不用担心键码和所有这些。 – Madbreaks 2012-08-03 22:16:48

回答

3

我想这个问题是在keydown上立即触发提交。如果你设置的功能在keydown上执行...

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

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

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

+1

这是正确的(http://www.quirksmode.org/dom/events/keys.html)。 – Gromer 2012-08-03 22:21:56

+0

谢谢。把e.preventDefault()放在keydown中,然后在keyup中添加我的“更改”触发器,使其完美无缺。我也会尝试在原始问题的评论中提到的“。提交”技术。看起来像赢家,没有代码。 – 2012-08-03 22:26:02

+0

没问题。感谢Gromer的链接,我尝试过但没时间,没有找到它;) – banzomaikaka 2012-08-03 23:50:42