jQuery.Autocomplete未选择行问题

顺其自然001 发布于 2013/08/13 17:42
阅读 1K+
收藏 0

选择用户名称,同时要得到Id,如果手动输入用户名称,再根据提示选择,完全没问题,

有问题的是,用户复制一个用户名,刚好只有一个,虽然有提示,但他没选择提示的那行,

结果就Id没改变,如果只选一次,还好,判断Id为空就行了。如果选过多次,Id不为空,就没办法判断,

造成Id和用户名不匹配,难道还要再验证一次?

function userNameAutoComplete(id, func,userName,userId) {
  var url = contextPath + "todo/getJsonData.jsp?type=users";
  $.getJSON(url, function (data) {
    $('#' + id).autocomplete(data, {
      max: 12,    //列表里的条目数
      minChars: 1,    //自动完成激活之前填入的最小字符
//      width: this.width,     //提示的宽度,溢出隐藏
      scrollHeight: 300,   //提示的高度,溢出显示滚动条
      mustMatch: true,//必须匹配
      matchContains: true,    //包含匹配,就是data参数里的数据,是否只要包含文本框里的数据就显示
      autoFill: false,    //自动填充
      formatItem: function (row, i, max) {    
        return  row.userName;
      },
      formatMatch: function (row, i, max) {
        return row.userName + row.pinyin;
      },
      formatResult: function (row) {
        return row.userName;
      }
    }).result(function (event, row, formatted) {
        //赋值
        if (row) {
          if (userName)$("#" + userName).val(row.userName);
          if (userId)$("#" + userId).val(row.userId);

          //回调函数
          if (typeof func != "undefined" && func!="") {
            eval(func + "(row)")
          }
        }
      });
  });
}

加载中
0
推荐方案
推荐方案

如果你尝试92find的Autocomplete托管服务,就不需要了解javascript  的细节了

 

实现一个智能提示功能需要ajax、数据库、jsp/php、算法等很多知识,
如果数据量大,还需要特殊优化
一个小功能,花费太大精力很不划算
92find.com上的一个js插件实现了搜索框自动补全托管服务,
只要一行javascript代码就可以实现百度、淘宝搜索框提示的全部功能
比如:汉字拼音匹配、拼音前缀匹配、模糊搜索、智能容错,还可以自定义提示词汇及其排序权重
花五分钟我的网站就可以部署同百度、淘宝一样强大好用的输入提示功能
同时兼容IE、Firefox、Safari、Chrome、Opera各种浏览器
兼容ios、Android、Windows

返回顶部
顶部