【问题标题】:Text Input box only accepts Backspace文本输入框只接受退格
【发布时间】:2012-07-24 11:15:44
【问题描述】:

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

    }   
});

【问题讨论】:

  • 为什么您的“keydown”处理程序明确触发“keypress”事件?为什么不悄悄返回,让浏览器自然地进行按键操作呢?
  • @Pointy 问题已修改,我没有意识到我发布了我只是用来尝试强制它触发按键事件的那段代码(它没有工作......显然:) )
  • 嗯,我也刚刚注意到您的“按键”处理程序正在返回false。这会让它什么都不做。
  • 你会发现...不太清楚为什么我把返回flase放在文本字段上...谢谢Pointy。你想把它作为答案吗?
  • 当然可以!很高兴你成功了。

标签: javascript jquery


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    相关资源
    最近更新 更多