javascript - jQuery - 正确输入最小/最大,键盘延迟

标签 javascript jquery

我得到了这个代码:

var $this = $(this);
var val = $this.val();
var max = $this.attr("max");
var min = $this.attr("min");

if (max > 0 && val > max){
    e.preventDefault();
    $this.val(max);
}
else if (min > 0 && val < min)
{
    e.preventDefault();
    $this.val(min);
}

问题是,例如,当 min/max70/250 并且用户尝试输入 200 时,它会立即从 code>270 -_- 所以我需要在 keyup 上超时/延迟,所以我尝试了:

var delay = (function(){
  var timer = 0;
  return function(callback, ms){
    clearTimeout (timer);
    timer = setTimeout(callback, ms);
  };
})();


$("input").keyup(function(e) {
    delay(function(){
        var $this = $(this);
        var val = $this.val();
        var max = $this.attr("max");
        var min = $this.attr("min");

        if (max > 0 && val > max){
            e.preventDefault();
            $this.val(max);
        }
        else if (min > 0 && val < min)
        {
            e.preventDefault();
            $this.val(min);
        }
    }, 1000 );
});

但现在修正尚未执行。怎样做才正确呢?还有人有更好的想法来解决“输入 200 而没有立即更正”问题吗?

最佳答案

您可以使用 Jquery focusout 函数。

https://www.w3schools.com/jquery/event_focusout.asp

这将检查用户何时移动到另一个字段或输入部分,然后执行验证。这样就不需要计时器或延迟了。

$("input").focusout(function(e) {
        var $this = $(this);
        var val = $this.val();
        var max = $this.attr("max");
        var min = $this.attr("min");

        if (max > 0 && val > max){
            e.preventDefault();
            $this.val(max);
        }
        else if (min > 0 && val < min)
        {
            e.preventDefault();
            $this.val(min);
        }
});

关于javascript - jQuery - 正确输入最小/最大,键盘延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43307707/

相关文章:

javascript - Java中如何通过request get参数获取html按钮的id?

javascript - $(window).scroll() 在 IE 9 中不起作用

javascript - 如何构建类内部类的使用以避免循环引用?

javascript - 2个元素悬停 ISSUE jQuery

javascript - 自动在新窗口中打开 pdf 文件

javascript - 仅在堆栈中的最后一个执行回调

javascript - React Navigation - 如何在 axios 实例中访问 this.props.navigation

javascript - 每秒帧数问题

javascript - 如何解决 Facebook 使用移动网络共享时出现的 "API Error code 4202"错误

php - foreach() invalid argument error using jquery and ajax 错误