jquery-ui使用多个字段值自动完成

时间:2012-06-08 15:08:21

标签: jquery-ui jquery-ui-autocomplete

我有一堆字段(名字,姓氏等),我希望能够将任何填充或部分填充的值传递给自动完成服务器端,以便我可以在查询中使用它们。

1 个答案:

答案 0 :(得分:0)

我是通过在各种字段或自动完成“选择”事件的焦点更改上更新自动完成“源”来完成此操作。

jQuery('#people_new_user input[type="text"]').each(
    function(index, element) {
        var field = element.name;
        jQuery(element)
            .focus(setSourceUser)
            .autocomplete({
          source: "/cf/AutoComplete/People?current="+field,
          select: selectUser
        });
    });

上面的代码设置了一个名为“setSourceUser”的“焦点”事件处理程序和一个名为“selectUser”的自动完成“select”事件的处理程序。

function setSourceUser(event)
{
  var endPart = "";
  jQuery('#people_new_user input[type="text"]').each(
    function(index, ielement) {
      var ifield = ielement.name;
      var ival = ielement.value;
      if (ival != '')
      {
          endPart += '&field=' + ifield;
          endPart += '&value=' + ival;
      }
    }).each(
    function(index, element) {
      var field = element.name;
      jQuery(element)
                .autocomplete("option", "source", 
                    "/cf/AutoComplete/People?current="+field+endPart);
    });
}

上面的“setSourceUser”函​​数获取所有字段中的所有值(在第一个“each”函数中)并为源构建“endPart”,然后为每个字段设置自动完成“source”选项。我不会显示“选择”回调,因为它会执行与此问题无关的其他内容,然后调用“setSourceUser”。源代码最终类似于/cf/AutoComplete/People?current=last_name&field=first_name&value=p&field=last_name&value=tomblin以及自动填充本身提供的“术语”值。

在服务器端,我的函数(在本例中用Mason和Perl编写)使用&field=foo&value=bar对(跳过where == current的那些,因为自动完成传递了{{1中的更新值)在“LIKE”sql语句中。然后我在JSON中返回找到的结果。 (如果有超过50个结果,我不会因为列表太长而烦恼。)

term