我正在使用jQuery代码通过使用输入键触发输入字段。我在另一个视图中使用了代码,它工作得很好。在新视图中,不知何故它根本不起作用。键被触发,但不调用.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包含在两个文档中。
你需要$(this).trigger('enterKey')
.
.bind()
和.on()
几乎相同,尽管.bind()
从版本 3 开始被弃用(因此不要;)使用它(。
语句$(this).on('enterKey')
只注册一个新的事件侦听器,回调为空/未定义
您要触发自定义事件
改变
$(this).on("enterKey");
自
$(this).trigger("enterKey");
试试这个。
$(this).trigger("enterKey");
不建议使用 .bind((,因为它已被弃用。