1

嗨,我正在为我的 asp.net mvc 项目使用 kedo ui 我可以使用自动完成功能,并且我从数据库中获取产品,这工作正常,但我不想选择现有产品如果已经输入了产品我该怎么办它应该引发错误的文本框

    <%= Html.Kendo().AutoComplete()
      .Name("produciits")
      .DataTextField("ProductName")
      .Filter("contains")
      .DataSource(source => {
          source.Read(read =>
          {
              read.Action("GetProducts", "Home");
          })
          .ServerFiltering(false);
      })
%>
4

1 回答 1

1

如果我正确理解您的问题,您希望避免使用某些分隔符在自动完成文本框中出现重复项目。如果是这种情况,您必须按照以下代码段在自动完成的 onChange 事件中连接一些手动工作,如果不是,请澄清一下。

<%= Html.Kendo().AutoComplete()
      .Name("produciits")
      .Separator(",")
      .DataTextField("ProductName")
      .Filter("contains")
      .DataSource(source => {
          source.Read(read =>
          {
              read.Action("GetProducts", "Home");
          })
          .ServerFiltering(false);
      })
.Events(e => e.Select("onChange"))
%>

<script>
    function onChange(e) {
        var text = e.item.text(),
            valArray = this.value().split(",");
        if ($.inArray(text, valArray) !== -1) {

            alert(text + " already selected");
            // Retaining previous values
            e.preventDefault();            
            valArray.pop();
            this.value(valArray.join(",") + ",");
        }
    }
</script>

如果您只想坚持使用数据源项,我建议您使用选,它会自动跟踪已选择的内容。

于 2013-11-13T07:37:17.953 回答