带有 .bind() 的 jQuery .keyup() 不起作用



我正在使用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((,因为它已被弃用。