我正在使用jQuery代码通过使用enter键触发输入字段。我在另一个视图中使用了代码,它完美无缺。在新视图中,它根本不起作用。键盘被触发但未调用.bind()
函数。
这是HTML触发器:
<div class="form-group">
<h3>Customers</h3>
<input class="form-control" id="searchNew" placeholder="Search" name="searchNew" autofocus="" value="@form("searchValue").value">
</div>
这是jQuery代码:
$('#searchNew').bind("enterKey", function(e){
console.log("Test2");
$.ajaxSetup({
beforeSend: function(){
$('.loading').fadeIn();
},
complete:function(){
$('.loading').fadeOut();
}
});
$.ajax({
type : 'POST',
url : '@routes.Application.searchLicensesAdmin()',
data : $('#search').serialize(),
success : function (data) {
$('#license-table').html(data);
return false;
},
error : function (data) {
console.log("Error");
}
});
return false;
});
$('#searchNew').keyup(function(e){
if(e.keyCode == 13){
console.log("Test1");
$(this).on("enterKey");
}
});
Test1被触发并显示在控制台中,但Test2甚至根本没有触发。问题不在于ajax
调用,而是.bind()
。这可能是一个愚蠢的原因,为什么它不起作用,但我无法弄明白。 jQuery包含在两个文档中。
答案 0 :(得分:3)
您需要$(this).trigger('enterKey')
。
.bind()
和.on()
几乎完全相同,但从版本3开始不推荐.bind()
(所以不要使用它;))。
语句$(this).on('enterKey')
只注册一个新的事件监听器,带有空/未定义的回调
答案 1 :(得分:2)
您希望触发自定义事件
更改
$(this).on("enterKey");
要
$(this).trigger("enterKey");
答案 2 :(得分:0)
试试这个。
$(this).trigger("enterKey");
不推荐使用.bind(),因为它已被弃用。