当光标位于表单内时,有没有办法捕获所有击键。我需要检测 ENTER 命中,然后模拟 TAB 命中(光标跳转到下一个表单元素)。为什么?人们(会计师)习惯于用单手输入数据,只需使用数字键盘。
问问题
2318 次
4 回答
2
这是我用来在 asp.net 网格中模拟“Enter”键的代码,就像“TAB”键一样:
function handleEnter (field, event) {
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
var i;
for (i = 0; i < field.form.elements.length; i++){
if (field == field.form.elements[i]) //Find the control's index
break;
}
i++; // Go to next control index
var precField = field.form.elements[i];
if (precField.type == 'text') {
if (field.form.elements[i+1].type == 'hidden' && field.form.elements[i + 2].type!='submit')
handleEnter(field.form.elements[i + 1], event);
else
precField.focus();
}
else if (precField.type != 'hidden')
handleEnter(precField, event);
return false;
}
else
return true;
}
如您所见,它只是从 1 个文本字段到另一个 ( if (precField.type == 'text')
),但我相信您可以根据需要对其进行调整。
我将 js 函数添加到我的 TextBoxes 的 OnKeyDown 事件中:
<asp:TextBox ID="txtP1s" runat="server" OnKeyDown='return handleEnter(this, event);'></asp:TextBox>
于 2012-12-03T19:17:58.993 回答
2
这是一些在表单中模拟选项卡的 jQuery。您需要以:input
与您所在的形式相同的形式获取所有元素,然后遍历。它也适用于复选框和任何其他:input
捕获的表单元素。
演示:http: //jsfiddle.net/hbV5b/
var onkey = function(e) {
if ( e.which == 13 ) {
e.preventDefault();
var index = -1,
el = this,
$forms = $(this).closest('form').find(':input').each(function(i) {
if( this === el ) {
index = i+1;
return false;
}
});
index < $forms.length ? $forms[index].focus() : $(el).blur()
}
};
// attach/detach the handler
$(':input').focus(function() {
$(this).keypress(onkey);
}).blur(function() {
$(this).unbind('keypress', onkey);
});
于 2012-12-03T19:40:54.160 回答
1
使用 JQuery,您可以在按下 ENTER(键代码 13)时模拟 TAB(键代码 9),使用如下所示:
$(".input").keyup(function (e) {
if (e.keyCode == 13) {
jQuery.event.trigger({ type : 'keypress', which : 9 });
}
});
于 2012-12-03T19:18:56.120 回答
1
如果您的脚本使用 jQuery,那么:
var form = $('someForm');
form.find(':text').on('keyup', function(e) {
if (e.which === 13){
form.find(':text[tabindex = ' + (+$(this).prop('tabindex') + 1) + ']').trigger('focus');
}
});
此代码需要每个字段的 tabindex 属性。例如:
第一个字段:
<input type="text" tabindex="1">
第二个字段:
<input type="text" tabindex="2">
在第一个字段中按 Enter 键后 - 焦点将传递给第二个字段。
于 2012-12-03T19:17:24.127 回答