文本输入框仅接受Backspace

时间:2012-07-24 11:15:45

标签: javascript jquery

我正在构建一个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);

    }   
});

1 个答案:

答案 0 :(得分:1)

看起来“keypress”处理程序(至少有时)返回false。这将被解释为停止处理事件的命令 - 包括默认的“本机”行为。也就是说,它会导致按键被忽略。