是否有Jquery中的事件,只有在用户按下文本框中的回车键时才会触发?或者有任何可以添加以包括此功能的插件吗?如果没有,我该如何编写一个快速的插件来实现这一点?
是否有Jquery中的事件,只有在用户按下文本框中的回车键时才会触发?或者有任何可以添加以包括此功能的插件吗?如果没有,我该如何编写一个快速的插件来实现这一点?
你可以连接你自己的自定义事件
$('textarea').bind("enterKey",function(e){
//do stuff here
});
$('textarea').keyup(function(e){
if(e.keyCode == 13)
{
$(this).trigger("enterKey");
}
});
$('#textbox').on('keypress', function (e) {
if(e.which === 13){
//Disable textbox to prevent multiple submit
$(this).attr("disabled", "disabled");
//Do Stuff, submit, etc..
//Enable the textbox again if needed.
$(this).removeAttr("disabled");
}
});
$(this).removeAttr("disabled");
来重新启用文本框。 - misterjaytee这是一个为您提供的插件:(Fiddle:http://jsfiddle.net/maniator/CjrJ7/)
$.fn.pressEnter = function(fn) {
return this.each(function() {
$(this).bind('enterPress', fn);
$(this).keyup(function(e){
if(e.keyCode == 13)
{
$(this).trigger("enterPress");
}
})
});
};
//use it:
$('textarea').pressEnter(function(){alert('here')})
$
变量作为插件并不是一个好主意,因为它可能会引起冲突。 - Ali$("#myInput").bind('click, onEnter', myCallback);
并且不需要任何其他东西就可以工作吗? - Ali(function($) {
$.fn.onEnter = function(func) {
this.bind('keypress', function(e) {
if (e.keyCode == 13) func.apply(this, [e]);
});
return this;
};
})(jQuery);
要使用它,请包含代码并按以下方式设置:
$( function () {
console.log($("input"));
$("input").onEnter( function() {
$(this).val("Enter key pressed");
});
});
func.apply(this)
来调用回调函数,这样在回调函数内部,您可以像平常一样使用this
来访问触发事件的元素。 - Aliif (e.keyCode)
中添加e.preventDefault(); e.stopPropagation();
即可。 - Irongaze.comlive()
的使用已被弃用,并在jQuery版本1.9中被删除。建议改用on()
。document.body
并将$selector作为第二个参数传递给on()
,可以在不需要处理重新绑定或双重绑定事件的情况下,附加、分离、添加或删除元素。这是因为事件是附加到document.body
而不是直接附加到$selector
,这意味着$selector
可以被添加、删除和再次添加,而永远不会加载绑定到它的事件。on()
之前调用off()
,使得该脚本可以在页面的主体内或AJAX调用的主体内工作,而无需担心意外双重绑定事件。$(function() {...})
中,该脚本可以再次由页面的主体或AJAX调用的主体加载。对于AJAX请求,$(document).ready()
不会触发,而$(function() {...})
会触发。<!DOCTYPE html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
var $selector = $('textarea');
// Prevent double-binding
// (only a potential issue if script is loaded through AJAX)
$(document.body).off('keyup', $selector);
// Bind to keyup events on the $selector.
$(document.body).on('keyup', $selector, function(event) {
if(event.keyCode == 13) { // 13 = Enter Key
alert('enter key pressed.');
}
});
});
</script>
</head>
<body>
</body>
</html>
search
,您也可以使用on 'search'
事件。例如:<input type="search" placeholder="Search" id="searchTextBox">
.
$("#searchPostTextBox").on('search', function () {
alert("search value: "+$(this).val());
});
//简短易懂的解决方案
$(document).ready(function(){
$('#TextboxId').keydown(function(event){
if (event.which == 13){
//body or action to be performed
}
});
});
HTML代码:
<input type="text" name="txt1" id="txt1" onkeypress="return AddKeyPress(event);" />
<input type="button" id="btnclick">
Java Script 代码
function AddKeyPress(e) {
// look for window.event in case event isn't passed in
e = e || window.event;
if (e.keyCode == 13) {
document.getElementById('btnEmail').click();
return false;
}
return true;
}
您的表单没有默认的提交按钮
另一个微妙的变化。 我进行了轻微的权力分离,因此我有一个插件来启用捕获回车键,然后我只需正常绑定事件:
(function($) { $.fn.catchEnter = function(sel) {
return this.each(function() {
$(this).on('keyup',sel,function(e){
if(e.keyCode == 13)
$(this).trigger("enterkey");
})
});
};
})(jQuery);
然后在使用时:
$('.input[type="text"]').catchEnter().on('enterkey',function(ev) { });
$('body').catchEnter('.onelineInput').on('enterkey',function(ev) { /*process input */ });
e.keyCode
,最好使用e.which
,这将确保您在每个浏览器上处理相同的按钮。 - Oleg Shakhov