您可以检查用户是否正在编辑文本字段而不进行任何编辑吗?我希望在用户处于文本字段并按下回车时调用函数。我知道它适用于表格。
咖啡:
$(document).keyup (e) ->
func() if e.which is 13 and "user is in input field"
使用Javascript:
$(document).keyup(function(e) {
if(e.which == 13 and "user is in input field") {
func();
}
});
答案 0 :(得分:3)
您可以使用jQuery的.on()
方法创建一个绑定到document
的委托事件处理程序,但只有在目标元素与您选择的选择器匹配时才调用您的处理函数:
$(document).on('keypress', 'input[type="text"],textarea', function(e) {
if (e.which === 13) {
// do something here
}
});
(这与Musa的答案类似,只是jQuery会自动为您进行.is()
测试。)
注意第二个参数中的选择器是'input[type="text"],textarea'
,以便排除非文本输入。
答案 1 :(得分:1)
我会使用jQuery检查焦点上的输入字段:
var selectedInput = null;
$(function() {
$('input, textarea, select').focus(function() {
selectedInput = this;
}).blur(function(){
selectedInput = null;
});
});
答案 2 :(得分:1)
试试这个
$('input').keyup(function(e) {
if (e.which == 13) {
// do whatever you want
}
});
答案 3 :(得分:1)
我会像Yair Nevet那样使用焦点状态,因为你可能需要在onbeforeunload等其他事件回调中进行测试。
"user is in a field or something" = $( "input:focus,textarea:focus" ).length > 0
jQuery doc说明 “如果您正在寻找当前关注的元素,$(document.activeElement)将检索它而无需搜索整个DOM树。”
所以也许
$( document.activeElement ).filter('input,textarea').length > 0
所以:
$(document).keyup(function(e) {
if(e.which == 13 and $( document.activeElement ).filter('input,textarea').length > 0) {
func();
}
});
答案 4 :(得分:0)
您可以使用目标元素来检查哪个字段是焦点
$(document).keypress(function(e) {
if(e.which == 13 && $(e.target).is('input,textarea')) {
func();
}
});
如果生成keypress事件的元素是文本框,则 $(e.target).is('input,textarea')
返回true。
咖啡:
$(document).keypress (e) ->
func() if e.which is 13 and $(e.target).is("input,textarea")