【问题标题】:Autocomplete: Display data different from what is filled, and filling in multiple fields?自动完成:显示数据不同于填写的内容,并填写多个字段?
【发布时间】:2011-01-01 17:53:17
【问题描述】:

我正在使用 asp.NET MVC,并且正在查看 JQuery 自动完成插件以了解我想做的事情。我需要一些我认为它无法提供的额外功能。

我有一个包含两个文本字段的页面,名字和姓氏。理想情况下,当有人开始输入任何一个时,我希望自动完成以显示所有匹配项的名字和姓氏。如果选择了其中一个匹配项,我只想将适当的(名字/姓氏)名称输入当前字段,而另一个字段也填写适当的名称。

所以这里的问题是 A) 我希望建议文本与将填充到当前字段中的值不同,并且 B) 我想从单个自动完成更新多个字段。这有意义吗?在网上似乎很难找到有关这种情况的信息。提前感谢您的宝贵时间。

【问题讨论】:

    标签: jquery asp.net ajax asp.net-mvc autocomplete


    【解决方案1】:

    您正在寻找的内容对于传统的自动完成插件来说有点不寻常,并且从可用性的角度来看,这种行为会有些出乎意料......这可能会让一些用户感到困惑,因为它违反了他们的规范已经很熟悉了。

    此外,让用户在一个字段中更改导致对其他字段的自动更改几乎总是一个非常糟糕的主意。用户并不总是注意到另一个字段发生了变化,他们也不总是仔细检查预填充字段的值,因此这通常会导致数据输入错误率增加。

    您是否考虑过在 UI 中只使用一个名称字段并仅使用一个自动完成功能?在服务器端,您可以将内容拆分为单独的字段进行存储。

    您可能会考虑的另一种技术是具有可选的“查找我”功能。在这里,您将有一个如上所述的字段。用户搜索,如果他们选择了某些内容,它会填充表单的其余部分。通常,您会隐藏或禁用表单的其余部分,直到用户从查找中进行选择,或者明确按下某种“跳过”按钮。

    我发现这很有用,尤其是当您查找多个字段时可以为用户预先填充这些字段时。它还具有比您在问题中描述的场景更直观的用户界面的优势。

    【讨论】:

      【解决方案2】:

      如果你决定你真的想这样做,这个例子会做你想做的事。您可以使用result() 方法添加您需要的功能。

      $(document).ready(function(){
      
          var data = [ "John Doe","Jane Doe","Mike Smith" ];
      
      
          $("#firstname").autocomplete(data).result(function(event, item) {
                  var rdata = item[0].split(" ");
                  $("#firstname").val(rdata[0]);
                  $("#lastname").val(rdata[1]);
          });
      
          $("#lastname").autocomplete(data).result(function(event, item) {
                  var rdata = item[0].split(" ");
                  $("#firstname").val(rdata[0]);
                  $("#lastname").val(rdata[1]);
          });
      
      });
      

      【讨论】:

      • 感谢两位的帮助。我想我试图走这条路的原因是因为如果用户输入新名称,我没有一种简单的方法可以将单个字段解析为名字和姓氏。这些作者中的一些可能只有名字,一些可能有名字和中间名首字母以及姓氏,等等。我认为能够接受新名称的唯一故障安全方法是物理上分隔字段。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多