jquery autocomplete 的一个小bug,谁能帮忙解决,十分感谢
时间:2011-10-17
来源:互联网
众所周知,
jquery 的 autocomplete 有一个result()方法,
供大家在用户选择了li中的某个值的时候执行用户自定义方法,
这样就能解决后台传来key,value,用户选择了key,隐藏域储存了value的问题.
但是这个result()方法有一个小bug
例如你的autocomplete 设置了autoFill: true, //自动填充,
匹配项里有'abcdefg',当你输入了'ab'之后,发现abcdefg都被加载到了input,
这个时候,用鼠标点击页面其他位置时,并没有激发result()事件.
或者你ctrl+v进去'abcdef',然后用鼠标点击页面其他位置,也没有激发result().
这样会引发一个问题,我在result()事件执行了记录value的方法
用户粘贴进去一个正确的key,但是我却没能把对应的value记录下来.
我看了一个下午autocomplete 的源码.没看出来所以然,
有没有nb人能解决这个问题,或者提供一个解决此问题的思路
感激不尽!!!
code:
JScript code
jquery 的 autocomplete 有一个result()方法,
供大家在用户选择了li中的某个值的时候执行用户自定义方法,
这样就能解决后台传来key,value,用户选择了key,隐藏域储存了value的问题.
但是这个result()方法有一个小bug
例如你的autocomplete 设置了autoFill: true, //自动填充,
匹配项里有'abcdefg',当你输入了'ab'之后,发现abcdefg都被加载到了input,
这个时候,用鼠标点击页面其他位置时,并没有激发result()事件.
或者你ctrl+v进去'abcdef',然后用鼠标点击页面其他位置,也没有激发result().
这样会引发一个问题,我在result()事件执行了记录value的方法
用户粘贴进去一个正确的key,但是我却没能把对应的value记录下来.
我看了一个下午autocomplete 的源码.没看出来所以然,
有没有nb人能解决这个问题,或者提供一个解决此问题的思路
感激不尽!!!
code:
JScript code
var url="suppliernumber.do?action=getAllSupplierNumberShort"; $.getJSON(url,function(data){ if(data!=null){ var allSupplierNumber=data.allSupplierNumber; $("#jgFactory").autocomplete(allSupplierNumber,{ max: 12, //列表里的条目数 minChars: 0, //自动完成激活之前填入的最小字符 width: 400, //提示的宽度,溢出隐藏 scrollHeight: 300, //提示的高度,溢出显示滚动条 matchContains: true, //模糊匹配 //mustMatch:true,//输入错误值是否填充 selectFirst:true,//自动选择第一个 autoFill: true, //自动填充 formatItem: function(row, i, max) {//下拉列表处理函数 return row.supplierIntro; }, formatMatch: function(row, i, max) {//格式化input显示内容 return row.supplierIntro; }, formatResult: function(row) { return row.supplierIntro; } }).result(function(event, data, formatted) { $("#jgFactoryAutoid").val(data.autoid);//保存id }); } }); });
作者: wenshanshan0824 发布时间: 2011-10-17

我就顶你
作者: soonfei 发布时间: 2011-10-18
晕啊原来有result这个函数啊!我自己在它里面加的代码,就是用户选择下拉内容的时候触发751行处吧,希望对你有用
JScript code
JScript code
selected: function() { var selected = listItems && listItems.filter("." + CLASSES.ACTIVE).removeClass(CLASSES.ACTIVE); //我加的代码 if(document.getElementById('can_win')){ var money = selected[0].innerHTML.toString().toLowerCase().replace(/<strong>|<\/strong>/g, ''); mathCanWin(money); } return selected && selected.length && $.data(selected[0], "ac_data"); },
作者: M136540328 发布时间: 2011-10-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28