文本输入框只接受Backspace

Text Input box only accepts Backspace

本文关键字:Backspace 输入 文本      更新时间:2024-01-18

我正在构建一个Jquery/JS过滤的数据表。我有一个搜索输入字段,它在按键时触发ajax请求,然后处理后续响应。

一切都很顺利,直到我决定把按下退格按钮作为一个额外的事件,检查字段值是否小于1。

它工作得很好,直到我添加了第二个.on方法,它应该只在退格上激发,而不在其他地方激发。

如果有人问,ajaxify_laravel()函数运行良好,在这个脚本中不是问题。

结果是:一个只接受退格键的文本框。我如何让它正常工作,接受所有按键,但单独处理退格?我以为我已经搞定了,但显然我没有。

我的代码:

$('input[name="search"]').on('keypress', function() 
{
    if ($(this).val().length > 1)
    {               
        var request = {
            'filter' : $(this).attr('name'),
            'value'  : $(this).val()
        }, url = "/admin/user/view";
        ajaxify_laravel(url, request, build_user_html, failure);
    }
    return false;
}).on('keydown', function(e) {
    if (e.keyCode == 8 && $(this).val().length < 1)
    {
        var request = {
            'filter' : 'reset'
        }, url = "/admin/user/view";
        ajaxify_laravel(url, request, build_user_html, failure);
    }   
});

看起来好像"keypress"处理程序(至少有时)正在返回false。这将被解释为停止处理事件的命令—包括默认的"原生"行为。也就是说,它会导致按键被忽略。