Jquery函数从不在它被调用的第一个实例上运行

时间:2015-05-01 10:02:51

标签: javascript jquery html input

我正在尝试创建一个提交按钮,该按钮将在用户按下回车键时提交。

我必须先单击“提交”按钮,然后才能使用“输入”按钮作为“虚拟点击”。

如果我尝试使用回车键直接提交,它就不会这样做,第一次按下必须使用鼠标。 是什么导致了这个错误?

JsFiddle



$("#guessSubmit").keydown(function(event){
    if(event.keyCode == 13){
		$("#guessSubmit").click();
	}
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="submit" id="guessSubmit" onclick=alert("test")>
&#13;
&#13;
&#13;

6 个答案:

答案 0 :(得分:2)

您不应该在按钮上添加按键,而是在正文或窗口上添加按键。

$(document.body).keydown(function(event){
    if(event.keyCode == 13){
        $("#guessSubmit").click();
    }
});

Demo

答案 1 :(得分:1)

您可以使用autofocus属性:

$("#guessSubmit").keydown(function(event){
    if(event.keyCode == 13){
        $("#guessSubmit").click();
        return false;
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="submit" id="guessSubmit" onclick='alert("test")' autofocus>

答案 2 :(得分:1)

该按钮仅在焦点处于关键状态时才会收到关键事件。您可以通过编程方式设置焦点:

$("#guessSubmit").focus();

更新:但是有更好的方法来处理13键:将按钮放在一个表单中。只要按下回车键并且焦点位于表单中的任何输入元素,表单就会被提交: HTML:

<form id="myform">
    <input type="text" name="text" autofocus />
    <input type="submit" id="guessSubmit" />
</form>

JavaScript的:

$("#myform").on("submit", function(e) {
    e.stopPropagation();
    e.preventDefault();
    alert("test");
});

请参阅此处的小提琴:http://jsfiddle.net/robbyn/62vnrcde/

答案 3 :(得分:0)

我有一个非常类似的问题,它与焦点有关。 我不得不将当前焦点设置为元素。它适用于鼠标,因为它设置了焦点。

这是更新的代码

//Submits if enter key is pressed
            $("#guessSubmit").keydown(function(event){
                if(event.keyCode == 13){
                    $("#guessSubmit").click();
                    event.preventDefault();
                }
            });

$("#guessSubmit").focus();

https://jsfiddle.net/6tk92stn/

答案 4 :(得分:0)

如果强行关注按钮,它应该有效吗?

$("#guessSubmit").focus().keydown(function(event){
    if(event.keyCode == 13){
        $("#guessSubmit").click();
    }
});

答案 5 :(得分:0)

您必须检查文档点击上的键码,如下所示:

$(document).keypress(function(event){
                if(event.keyCode === 13){
                    $("#guessSubmit").click();
                }
            });

检查Fiddle.