Javascript 除了按enter键外,jQuery按键可正常工作

Javascript 除了按enter键外,jQuery按键可正常工作,javascript,jquery,Javascript,Jquery,如果在输入标记内按enter键,我希望触发单击,但在所有其他情况下,我希望使用默认事件策略。我试过这样做: $("#keywords").keypress(function(e) { if (e.charCode === 13) { $("#campus-search").click(); } else { $("#keywords").val($("#keywords").val() + String.fromCharCode(e.charCod

如果在
输入
标记内按enter键,我希望触发
单击
,但在所有其他情况下,我希望使用默认事件策略。我试过这样做:

$("#keywords").keypress(function(e) {
    if (e.charCode === 13) {
        $("#campus-search").click();
    } else {
        $("#keywords").val($("#keywords").val() + String.fromCharCode(e.charCode));
    }
});

它工作,但我仍然不满意,因为当我在文本的某个地方点击“代码>输入”/代码>或者按下左边的按钮,或者home按钮,然后尝试键入一些文本,它将显示在输入的末尾,这是坏的用户体验。除了按下enter键外,我是否可以保持

输入以默认方式工作?

该功能不捕获非打印键,例如shift、esc、delete和enter,因此最好的方法是使用两个事件处理程序:一个用于
按键
,正如您上面定义的,还有一个用于
keydown
,它检查
charCode
13,然后在
$(#校园搜索)
上执行
click()
事件(如果通过输入键)

该函数不捕获非打印键,如shift、esc、delete和enter,因此最好的方法是使用两个事件处理程序:一个用于
按键
,如您上面所定义,还有一个用于
keydown
,它检查
charCode
13,然后在
$(#校园搜索)
上执行
click()
事件(如果通过输入键)

这应该行得通

$("#keywords").keypress(function(e) {
if (e.charCode === 13) {
    e.preventDefault(); // prevent default action of the event if the event is keypress of enter key
    $("#campus-search").click();
} else {
    $("#keywords").val($("#keywords").val() + String.fromCharCode(e.charCode));
}
});
这应该行得通

$("#keywords").keypress(function(e) {
if (e.charCode === 13) {
    e.preventDefault(); // prevent default action of the event if the event is keypress of enter key
    $("#campus-search").click();
} else {
    $("#keywords").val($("#keywords").val() + String.fromCharCode(e.charCode));
}
});

我认为您可以完全删除
else
子句以获得所需的结果


看看这个。

我认为您可以完全删除
else
子句以获得所需的结果


看看这个。

这就是你要找的:

HTML:

<input id="keywords" type="text" value="" />
<input id="campus-search" type="button" value="Campus Search" />

这就是您要寻找的:

HTML:

<input id="keywords" type="text" value="" />
<input id="campus-search" type="button" value="Campus Search" />

我想你要找的是:

$(document).ready(function () {
    $("#test").keyup(function (event) {
        if (event.keyCode == 13) {
            $("#campus-search").click();
        }
    });

    $("#campus-search").click(function () {
        console.log("BUTTON IS CLICKED");
    });
});
输入
将完全动作正常,一切都在
默认
下工作,除非当您按下enter按钮(keyCode=13)时,然后按钮
。click()
事件将被触发

工作小提琴:

----

#更新:问题中的代码只有一个提示,不要使用
charCode
,因为它已被弃用

此功能已从Web上删除。尽管某些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的网页或Web应用程序可能随时中断

(例如,
charCode
不适用于FF v29.0.1)

还有一些不同但重要的事情要知道:

字符编码是在按键向下按键向上事件中设置的从不。在这些情况下,将设置keyCode


来源:

我想你要找的是:

$(document).ready(function () {
    $("#test").keyup(function (event) {
        if (event.keyCode == 13) {
            $("#campus-search").click();
        }
    });

    $("#campus-search").click(function () {
        console.log("BUTTON IS CLICKED");
    });
});
输入
将完全动作正常,一切都在
默认
下工作,除非当您按下enter按钮(keyCode=13)时,然后按钮
。click()
事件将被触发

工作小提琴:

----

#更新:问题中的代码只有一个提示,不要使用
charCode
,因为它已被弃用

此功能已从Web上删除。尽管某些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的网页或Web应用程序可能随时中断

(例如,
charCode
不适用于FF v29.0.1)

还有一些不同但重要的事情要知道:

字符编码是在按键向下按键向上事件中设置的从不。在这些情况下,将设置keyCode


来源:

让我澄清一下问题:解决方案会将字符写在内容末尾,而不管您的位置如何。在输入上尝试您的事件。在输入中单击,按home按钮并键入内容。按home键后,字符将出现在文本的开头,但它会出现在字符串的末尾。所以你的解决方案并不是一种改进。你能不能让你所说的事情没有发生。如果我单击“输入”,然后按home键并键入它在开始时确实键入了..?这是一个用户事件。当您希望在文本末尾以外的地方键入时,它仍将在文本末尾键入。在$(“#关键字”).val($(“#关键字”).val()+String.fromCharCode(e.charCode))行中,您还需要什么;怎么办?这很简单:如果我们有一个“阅读问题”的文本,并且我们想在字符串的开头键入“注意时”,那么结果将是“阅读问题时注意”,这不会发生,您要在文本框开始处键入的文本将在文本框结尾处键入。让我澄清一下问题:解决方案会将字符写入内容末尾,而不管您的位置如何。在输入上尝试您的事件。在输入中单击,按home按钮并键入内容。按home键后,字符将出现在文本的开头,但它会出现在字符串的末尾。所以你的解决方案并不是一种改进。你能不能让你所说的事情没有发生。如果我单击“输入”,然后按home键并键入它在开始时确实键入了..?这是一个用户事件。当您希望在文本末尾以外的地方键入时,它仍将在文本末尾键入。在$(“#关键字”).val($(“#关键字”).val()+String.fromCharCode(e.charCode))行中,您还需要什么;怎么办?这很简单:如果我们有一个文本“readthequestion”,并且我们想在字符串的开头键入“pay attention when”,那么结果将是“pay attention when”