Aar*_*nLS 12 javascript asp.net
用户不喜欢Enter键提交页面的事实.所以我的任务是阻止提交并将Enter键更改为Tab到下一个字段.
我已经尝试了很多在网上找到的javascript片段,但到目前为止还没有.唯一一个甚至接近产生影响的是jQuery API的e.preventDefault(),它停止了提交,但我尝试过的任何东西都不会模拟选项卡行为.
e.returnValue = false;
e.cancel = true;
Run Code Online (Sandbox Code Playgroud)
页面仍然在keydown事件处理程序中提交以上内容.与return falsekeydown事件处理程序中的效果相同.处理程序正在触发,通过在其中放置一个带有firebug的断点进行测试.
这需要适用于IE和Firefox.
不要说"不要这样做".
1)我已经确信我不应该这样做,但这不是我的选择,所以讨论是静音的.
2)这将是"我应该这样做吗?"这个问题的答案,这不是我要问的问题.
And*_*ker 11
这只是感觉很蠢,但你可以event.preventDefault像你提到的那样使用,然后调用focus()下一个最接近的输入:
这是一个简单的例子:
$("input").bind("keydown", function(event) {
if (event.which === 13) {
event.stopPropagation();
event.preventDefault();
$(this).next("input").focus();
}
});
Run Code Online (Sandbox Code Playgroud)
示例:http://jsfiddle.net/andrewwhitaker/Txg65/
更新:如果输入之间有元素,则使用plain next()将无效.相反,使用nextAll():
$("input").bind("keydown", function(event) {
if (event.which === 13) {
event.stopPropagation();
event.preventDefault();
$(this).nextAll("input").eq(0).focus();
}
});
Run Code Online (Sandbox Code Playgroud)
http://jsfiddle.net/andrewwhitaker/GRtQY/
| 归档时间: |
|
| 查看次数: |
8026 次 |
| 最近记录: |