使用.bind()的jQuery .keyup()不起作用

时间:2017-06-13 11:24:25

标签: javascript jquery ajax

我正在使用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包含在两个文档中。

3 个答案:

答案 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(),因为它已被弃用。