Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript或jQuery中模拟ENTER键上的制表符_Javascript_Jquery - Fatal编程技术网

如何在javascript或jQuery中模拟ENTER键上的制表符

如何在javascript或jQuery中模拟ENTER键上的制表符,javascript,jquery,Javascript,Jquery,我想在一个页面的所有输入中更改keydown(按键)中的keycode。我想用TAB键代码替换Enter键代码。我怎么能做到 谢谢 编辑1) 考虑以下代码: <div> <asp:RadioButtonList ID="RadioButtonList1" runat="server"> <asp:ListItem>1</asp:ListItem> <asp:ListItem>2</asp:

我想在一个页面的所有输入中更改keydown(按键)中的keycode。我想用TAB键代码替换Enter键代码。我怎么能做到

谢谢


编辑1)

考虑以下代码:

<div>
    <asp:RadioButtonList ID="RadioButtonList1" runat="server">
        <asp:ListItem>1</asp:ListItem>
        <asp:ListItem>2</asp:ListItem>
        <asp:ListItem>3</asp:ListItem>
        <asp:ListItem>4</asp:ListItem>
    </asp:RadioButtonList>
    <br />
    <br />
    <asp:TextBox ID="TextBox1" runat="server">3333</asp:TextBox>
    <br />
    <br />
    <asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem>1</asp:ListItem>
        <asp:ListItem>2</asp:ListItem>
        <asp:ListItem>3</asp:ListItem>
    </asp:DropDownList>
</div>

1.
2.
3.
4.


3333

1. 2. 3.
我想当用户在上面的控件焦点的eny上按Enter键时转到下一个控件

谢谢

希望这能奏效

$('input,textarea').keydown(function(){
  if(event.keyCode==13) {
    event.keyCode = 9;
  }
});
编辑

试试这个。我不知道如何使用选择器来实现这一点

$('input,textarea').keypress(function(e){
    if(e.keyCode==13) {
   $(this).next().focus();
  }
});

此代码将用制表符替换enter:

$("#wmd-input").bind("keypress", function(e) {
   if (e.keyCode == 13) {
      var input = $(this);
      var inputVal = input.val();
      setTimeout(function() {
        input.val(inputVal.substring(0,inputVal.length) + "\t");
      }, 1);
   }
});

更新:

此代码将重点关注下一个元素:

$(document).ready(function () {
    $("input,select").bind("keydown", function (e) {
        if (e.keyCode == 13) {
            var allInputs = $("input,select");
            for (var i = 0; i < allInputs.length; i++) {
                if (allInputs[i] == this) {
                    while ((allInputs[i]).name == (allInputs[i + 1]).name) {
                        i++;
                    }

                    if ((i + 1) < allInputs.length) $(allInputs[i + 1]).focus();
                }
            }
        }
    });
});
$(文档).ready(函数(){
$(“输入,选择”).bind(“向下键”,函数(e){
如果(e.keyCode==13){
var allInputs=$(“输入,选择”);
对于(变量i=0;i
检查这里的小提琴:

我认为这项工作:

 $('input').live("keypress", function (e) {
        /* ENTER PRESSED*/
        var OffSet = 0;
        if (e.keyCode == 13) {
            /* FOCUS ELEMENT */
            if ($(this).is("input[type='radio']")) {
                var tblID = $(this).closest('table').attr('id');
                var radios = $('#' + tblID).find(":input");
                //alert(radios.index(this));
                OffSet = radios.length - radios.index(this) - 1;
            }
            //alert(OffSet);

            var inputs = $(this).parents("form").eq(0).find(":input");
            var idx = inputs.index(this);
            inputs[idx + OffSet].blur();

            try {
                inputs[idx + OffSet].selectionStart = inputs[idx + OffSet].selectionEnd = -1;
            } catch (e) {

            }
            if (idx == inputs.length - 1) {
                inputs[0].select();
            } else {
                inputs[idx + 1 + OffSet].focus(); //  handles submit buttons
                try {
                    inputs[idx + 1 + OffSet].select();
                } catch (e) {
                }
            }
            return false;
        }
    });

我遇到了一个类似的问题,我想按一下numpad上的+键,转到下一个字段。现在我发布了一个我认为会对你有所帮助的库

:一个jQuery插件,将numpad plus键用作等价的tab键

既然你想进去/↵ 相反,您可以设置选项。找出要与一起使用的键

JoelPurra.PlusAsTab.setOptions({
//使用enter而不是plus
//13号通过演示在
// https://api.jquery.com/event.which/
关键字:13
});
然后,通过将
plus as tab=“true”
添加到要在中使用enter as tab的表单字段或包含这些表单字段的其他元素来启用该功能。单选按钮不应该是问题,因为它们在我的另一个库中包含,-请参阅



.

我这样做的方法是使用jquery在您的选择上对每个元素进行查询,并在当前打开后关注元素

$(document).on('keyup', '.my-input', function (ev) {

    if (ev.keyCode == '13') {
        var currentInput = this;
        var isOnCurrent = false;

        $('.my-input').each(function () {

            if (isOnCurrent == true) {
                $(this).focus();
                return false;
            }

            if (this == currentInput) {
                isOnCurrent = true;
            }

        });
    }
});
我创造了一个解决这个问题的方法。它使用jQuery UI的“:tabbable”选择器查找下一个“tabbable”元素并选择它

用法示例:

// Simulate tab key when enter is pressed           
$('.myElement').bind('keypress', function(event){
    if(event.which === 13){
        if(event.shiftKey){
            $.tabPrev();
        }
        else{
            $.tabNext();
        }
        return false;
    }
});
$(文档).ready(函数(){
//Objetos con CssClass=“EntTab”替代输入(键码13)或表格(键码9)!!
$(“.EntTab”).bind(“按键”,函数(e){
如果(e.keyCode==13){
var inps=$(“输入,选择”);//也添加选择
对于(变量x=0;x
您可以在网站上找到类似的问题,我相信值得注意的是,更改浏览器的默认行为通常不是一个好主意。这违背了用户在按下该键时的预期。@ChristofReliasson:当然,这取决于您的目标用户。如果你能教育你的用户(例如,如果他们在楼下),这可能是一个非常好的工作流改进。我想,我误解了这个问题。你想在TAB press上关注其他元素吗?它不起作用。请参见我的编辑1。我希望关注转到下一个控件谢谢,但在单选按钮中,它会导致移动到每种类型的单选输入中。请参见:它对我起作用,只是它没有在button@Web开发者只有在下一个元素是输入,而不是标签等任何其他元素。第一个解决方案(更改键码)不再有效:-(我喜欢你的插件Joel,但当使用enter作为选项卡示例时,它似乎没有注意到tabindex.:(@EdDeGagne:
tabindex
被设计忽略-请参阅。可能应该编写类似的内容或从PlusAsTab和EmulateTab链接到该页面。)。
// Simulate tab key when enter is pressed           
$('.myElement').bind('keypress', function(event){
    if(event.which === 13){
        if(event.shiftKey){
            $.tabPrev();
        }
        else{
            $.tabNext();
        }
        return false;
    }
});
$(document).ready(function() {

//Objetos con CssClass="EntTab" sustituye el Enter (keycode 13) por un Tabulador (keycode 9)!!

    $(".EntTab").bind("keypress", function(e) {
        if (e.keyCode == 13) {
            var inps = $("input, select"); //add select too
            for (var x = 0; x < inps.length; x++) {
                if (inps[x] == this) {
                    while ((inps[x]).name == (inps[x + 1]).name) {
                        x++;
                    }
                    if ((x + 1) < inps.length) $(inps[x + 1]).focus();
                }
            } e.preventDefault();
        }
    });
});