if (typeof FlowUtil == 'undefined') {
AutoComplete = {};
}
/**
* 以别名alias为键,缓存该别名所搜索过的数据
*/
var cache = {};
var matchPattern =new RegExp('\\[[^\\]]+\\]','g');
/**
* 需要引用的样式及js
* <link rel="stylesheet" href="${ctx}/js/jquery-ui-portlet/lib/themes/jquery-ui.css">
* <script type="text/javascript" src="${ctx}/js/jquery-ui-portlet/lib/jquery-1.8.3.js"></script>
* <script src="${ctx}/js/jquery-ui-portlet/lib/jquery.ui.core.js"></script>
* <script src="${ctx}/js/jquery-ui-portlet/lib/jquery.ui.widget.js"></script>
* <script src="${ctx}/js/jquery-ui-portlet/lib/jquery.ui.position.js"></script>
* <script src="${ctx}/js/jquery-ui-portlet/lib/jquery.ui.menu.js"></script>
* <script src="${ctx}/js/jquery-ui-portlet/lib/jquery.ui.autocomplete.js"></script>
* <script type="text/javascript" src="${ctx}/js/util/json2.js"></script>
* <script src="${ctx}/js/hotent/platform/form/CommonDialog.js"></script>
*/
AutoComplete.init = function(){
$('[autoQuery]').each(function(){
var self = $(this);
AutoComplete.handleInit(self);
});
};
/**
* 处理【自动完成】控件的初始化工作
* @param obj 需要初始化的对象
*
* <input id="test" type="text" autoQuery="{'alias':'cxyh', 'filter':'FULLNAME|ACCOUNT', 'format':'姓名:[fullname],用户ID[userid]', 'render-format':'[account]', 'isCache':true}"> * <script> * var testObj = $('#test'); * autocomplete.handleInit(testObj); * </script> * * autoQuery参数介绍: * alias:自定义查询的别名(必需) * filter:对应自定义查询的条件字段,可传多个,以“|”分隔 * format:格式化自定义查询返回的结果,格式:[返回字段](必需) * render-format:格式化下拉列表的显示结果,如果为空,则使用上述format属性进行格式化显示 * isCache:是否使用js缓存返回的结果集 * minLength:最小输入长度,默认为0(即时搜索)。比如设置minLength:2,则在输入至少2个字符时才会去发起数据请求 * maxResult:最多返回的记录数,默认为10,即返回前10条记录 **/ AutoComplete.handleInit = function(obj){ var self = $(obj); var autoQuery = eval("("+self.attr('autoQuery')+")"); if(!autoQuery) return; var opinion = { /** * 使用format格式化返回结果 * @param item 数据 * @param format 格式化格式,默认使用autoQuery里的format属性:员工姓名-[fullname] */ getFormatItem: function(item, format){ if(!format) format = autoQuery.format; if(!format) return "无格式化format属性"; //返回的字段貌似都是小写 format = format.toLowerCase(); //使用全局定义的正则获取括号及内容 var result = format.match(matchPattern); if(!result || result.length<1) return false; for(var i=0;i