【问题标题】:validating user input when user finished typing当用户完成输入时验证用户输入
【发布时间】:2012-04-25 18:50:19
【问题描述】:

当用户完成输入时,验证用户输入文本字段的最佳方法是什么?我正在使用 javascript/jquery。有没有一种方法可以知道用户何时点击了文本字段?

【问题讨论】:

    标签: javascript jquery forms


    【解决方案1】:

    在文本字段上实现 onblur 事件处理程序,当用户跳到下一个字段时将触发该事件处理程序。

    使用 jQuery,

    $('.input_selector').on ('blur', function() {
        var inpValue = $(this).val();
        //validate Code
    });
    

    【讨论】:

    • 我不禁注意到,在页面加载时,这个 onblur 会自动运行。有没有办法解决这个问题?
    • 您是否将焦点设置在任何输入元素上?尝试将代码包装在 $(function () { /*above code*/ });
    • 抱歉,开启了自动对焦。有什么办法可以解决这个问题,所以我可以在不运行验证功能的情况下进行自动对焦?我会运行一个计数器,所以如果它是 0,不做任何事情......否则,验证?
    • @droidus 在页面加载时,您是否在一个字段上设置了焦点,然后将焦点更改为其他字段?是的,您可以使用标志或计数器来确定避免这种情况
    • @droidus onblur 事件将在焦点中的文本字段失去焦点时执行。如果它很复杂,只需按照您的建议使用标志/计数器。
    【解决方案2】:

    所有来这里寻找解决方案的人,请查看this answer

    基本上:

    下面的解决方案解决了这个问题,并会在 X 秒后调用 按照 OP 的要求完成。它也不再需要多余的 按键功能。我还添加了一个检查,以便您的函数调用 如果您的输入为空,则不会发生。

    //setup before functions
    var typingTimer;                //timer identifier
    var doneTypingInterval = 5000;  //time in ms, 5 seconds for example
    
    //on keyup, start the countdown
    $('#myInput').keyup(function(){
        clearTimeout(typingTimer);
        if ($('#myInput').val()) {
            typingTimer = setTimeout(doneTyping, doneTypingInterval);
        }
    });
    
    //user is "finished typing", do something
    function doneTyping() {
        //do something 
    }
    

    所有的功劳归于最初发布此答案的人,只是复制以防有人到达这里(就像我一样)寻找解决方案。

    【讨论】:

      猜你喜欢
      • 2017-07-24
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      相关资源
      最近更新 更多