jQuery按键工作正常,除按回车外
jQuery keypress to work normally except hitting enter
如果在input
标签内按enter键,我想触发click
,但希望在所有其他情况下使用默认事件策略。我试过这样做:
$("#keywords").keypress(function(e) {
if (e.charCode === 13) {
$("#campus-search").click();
} else {
$("#keywords").val($("#keywords").val() + String.fromCharCode(e.charCode));
}
});
它工作,但我仍然不满意,因为当我点击input
内部某处在文本或按下左键,或home键,然后尝试键入一些文本,它会在输入结束时显示它,这是糟糕的用户体验。除了按enter的情况外,我可以保持input
以默认方式工作吗?
我想你要找的是这个:
$(document).ready(function () {
$("#test").keyup(function (event) {
if (event.keyCode == 13) {
$("#campus-search").click();
}
});
$("#campus-search").click(function () {
console.log("BUTTON IS CLICKED");
});
});
input
将完全正常和一切工作在default
, 除非当你按下回车键(keyCode = 13),然后按钮.click()
事件将被触发。
工作小提琴:http://jsfiddle.net/Mz2g8/3/
,
# Update:对于你的问题中的代码只是一个提示,请不要使用charCode
,因为已弃用。
此功能已从Web中删除。尽管一些浏览器可能仍然支持它,但它正在被放弃。不要在旧的或新的项目中使用它。使用它的网页或Web应用程序可能随时崩溃。
(如。charCode
不支持FF v29.0.1)
和一些不同但重要的要知道的事情:
charCode never在keydown和keyup事件中设置。在这些情况下,设置keyCode。
来源:https://developer.mozilla.org/en-US/docs/Web/API/event.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
子句来获得你想要的结果。
keypress
函数不捕获非打印键,例如shift、esc、delete和enter,因此最好的方法是有两个事件处理程序:一个用于keypress
,正如您在上面定义的那样,另一个用于keydown
,检查charCode
13,然后在$(#campus-search)
上执行click()
事件,如果传递了该键码(通过enter按)。
这就是你要找的:
HTML:<input id="keywords" type="text" value="" />
<input id="campus-search" type="button" value="Campus Search" />
JavaScript/jQuery:
$("#keywords").keypress(function (e) {
if (e.charCode === 13) {
$("#campus-search").click();
} else {
$("#keywords").val($("#keywords").val() + String.fromCharCode(e.charCode));
}
});
$("#campus-search").on("click", function () {
alert("Searching..");
});
现场演示
- Javascript:selenium Web驱动程序isDisplayed()不工作
- jQuery UI自动完成突然停止工作
- AngularJS UI路由器不能像ng路由器那样工作
- HTML5音频加载和播放获胜'我不能在iPad上工作
- JavaScript打印功能使日历停止工作
- Javascript.getHours()工作不正常
- 为什么这在IE中的工作方式与在Firefox中不同
- 视频HTML没有'无法在Internet Explorer 11上工作
- 扩展移相器按钮类不工作
- Firebase迁移-简单的Firebase.set没有'不再工作了——旧的还是新的
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 正在尝试使用if和else添加类,但无法正常工作
- Jquery FadeIn FadeOut 只工作一次
- Foreach无法在Typescript中工作
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- JS可以在Chrome中工作,但不能在Firefox中工作
- 如何防止回车键提交表单,但仍然允许回车工作
- Javascript行/回车不工作
- jQuery按键工作正常,除按回车外