Javascript 如何使用JS捕获html表单上的所有击键?

Javascript 如何使用JS捕获html表单上的所有击键?,javascript,html,javascript-events,Javascript,Html,Javascript Events,当光标位于表单内时,是否有方法捕获所有击键。我需要检测ENTER点击,然后模拟TAB点击(光标跳到下一个表单元素)。为什么?人们(会计师)只需使用数字键盘,就可以用一只手输入数据。如果脚本使用jQuery,则: var form = $('someForm'); form.find(':text').on('keyup', function(e) { if (e.which === 13){ form.find(':text[tabindex = ' + (+$(this

当光标位于表单内时,是否有方法捕获所有击键。我需要检测ENTER点击,然后模拟TAB点击(光标跳到下一个表单元素)。为什么?人们(会计师)只需使用数字键盘,就可以用一只手输入数据。

如果脚本使用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键后,焦点将传递到第二个字段。

如果脚本使用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键后,焦点将传递到第二个字段。

这是我用来模拟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;
}

这是我用来在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;
}

使用JQuery,当按下ENTER键(键代码13)时,您可以模拟一个选项卡(键代码9),如下所示:

$(".input").keyup(function (e) {
    if (e.keyCode == 13) {
      jQuery.event.trigger({ type : 'keypress', which : 9 });
    }
});

使用JQuery,当按下ENTER键(键代码13)时,您可以模拟一个选项卡(键代码9),如下所示:

$(".input").keyup(function (e) {
    if (e.keyCode == 13) {
      jQuery.event.trigger({ type : 'keypress', which : 9 });
    }
});

下面是一些模拟表单中选项卡的jQuery。您需要获取所有
:以与您所在的相同形式输入
元素,然后遍历。它还适用于复选框和任何其他
:input
捕获的表单元素

演示:

var onkey=函数(e){
如果(e.which==13){
e、 预防默认值();
var指数=-1,
el=这个,
$forms=$(this).closest('form').find(':input').each(函数(i){
如果(此===el){
指数=i+1;
返回false;
}
});
索引<$forms.length?$forms[index].focus():$(el).blur()
}
};
//附加/分离处理程序
$(':input').focus(函数(){
$(此).keypress(onkey);
}).blur(函数(){
$(此).unbind('keypress',onkey);
});
​

下面是一些模拟表单中选项卡的jQuery。您需要获取所有
:以与您所在的相同形式输入
元素,然后遍历。它还适用于复选框和任何其他
:input
捕获的表单元素

演示:

var onkey=函数(e){
如果(e.which==13){
e、 预防默认值();
var指数=-1,
el=这个,
$forms=$(this).closest('form').find(':input').each(函数(i){
如果(此===el){
指数=i+1;
返回false;
}
});
索引<$forms.length?$forms[index].focus():$(el).blur()
}
};
//附加/分离处理程序
$(':input').focus(函数(){
$(此).keypress(onkey);
}).blur(函数(){
$(此).unbind('keypress',onkey);
});
​

如果表单设计正确,tab将自动转到下一个输入元素。您还可以设置
tabindex
来确定顺序。请参阅@peacemaker:我不认为这是问题所在……当用户点击NUMPAD ENTER键时,他希望模拟选项卡。@FrancisP啊,好的,我误解了OP的要求。如果您正确设计表单,选项卡将自动转到下一个输入元素。您还可以设置
tabindex
来确定顺序。请参阅@peacemaker:我不认为这是问题所在……当用户点击NUMPAD ENTER键时,他想模仿选项卡。@FrancisP啊,好吧,我误解了OP的要求。