如何在输入最少2位/字符之前忽略用户输入

时间:2018-01-23 18:55:07

标签: jquery

https://github.com/danielfarrell/bootstrap-combobox

我正在使用此代码库来允许在我的MVC应用程序中自动完成。它在Chrome中运行良好,但在IE中,用户输入单个字符或数字后,有时会坐下来,然后擦除输入框并返回任何内容。我发现它似乎只在返回的数据集很大时才这样做,似乎IE无法处理它。

我想我可以通过强迫用户输入至少2位数字/字符来解决这个问题,但是我找不到脚本中的位置来进行更改(我还是JS的新手)。

我正在考虑做这样的事情,但不知道该把它放在哪里:

var el = $('.combobox').combobox();

el.on('change', function(e){

  var value = $("#seed").val();

  var len = value.length;

  console.log("value is " + value + ' ' + " length is: " + len);

  if(len < 2) {
    e.preventDefault();
  }
})

2 个答案:

答案 0 :(得分:0)

也许您应该使用模型绑定尝试它,它将为您提供服务器/客户端验证。 我正在描述如何使用.NET示例解决它:

[StringLength(60, MinimumLength = 2)]        
public string Title {get;set;}

参考: https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/complex-data-model

答案 1 :(得分:0)

我能够解决我的特殊情况。我在IE中使用时无法找到错误,但我注意到当选择列表特别长时,组合框将停止工作。我提出的修复方法是为脚本添加最小长度功能,以便用户在搜索脚本触发之前必须在输入中输入至少2个数字。

在bootstrap-combobox脚本中我改变了这个:

  , lookup: function (event) {
      this.query = this.$element.val();
      return this.process(this.source);
    }

到此:

  , lookup: function (event) {
      this.query = this.$element.val();

      if (this.query.length > 1) {
          return this.process(this.source);
      }
    }