| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- ;
- (function ($, window, document, undefined) {
- //对jquery扩展了一个FuzzySearch方法
- $.fn.FuzzySearch = function (options) {
- //配置项
- var settings = {
- inputID: '',
- title: '请选择', //输入框提示语
- data: [], //选择项数组
- searchBtn: '', //查询按钮ID
- handlerFun: '', //选择项改变后需要执行的方法
- ajaxUrl: '', //异步获取数据时的请求地址
- clearHandlerFun:'',//点击清空后执行的方法
- };
- if (options) {
- //将调用处的配置项覆盖到settings
- $.extend(settings, options);
- }
- /*********************动态生成相关元素标签*********************/
- $.createElm = function (element, settings) {
- if ($("#" + settings.inputID).length > 0) {
- var inputStr = '<input type="text" id="' + settings.inputID + '_show" placeholder="' + settings.title + '" autocomplete="off"/>';
- $($("#" + settings.inputID)).parent().append(inputStr);
- var divStr = '<div id="' + settings.inputID + '_selectBox"></div>';
- $($("#" + settings.inputID)).parent().parent().append(divStr);
- } else {
- alert("不存在模糊搜索隐藏域");
- }
- };
- /*
- *data:要遍历的数据,如渠道或者游戏
- *inputID:隐藏域input的id
- */
- /***************将查询过的渠道名显示到显示层的input上,并将id赋值给隐藏域的input*****************/
- $.showQueryParam = function (element, settings) {
- if ($.trim($("#" + settings.inputID).val()).length != 0) {
- var hideID = $("#" + settings.inputID).val();
- }
- //没办法获取到隐藏域的值时,显示层如果有值,创建清空符号,遍历数据,比对显示层的name,再将id赋值给隐藏域
- // if ($.trim($("#" + settings.inputID).val()).length == 0) {
- // setTimeout(function () {
- // var gameName = $("#" + settings.inputID + "_show").val();
- // if (gameName != "") {
- // if (settings.data !== "" || settings.data !== null) {
- // //遍历数据
- // for (var key in settings.data) {
- // //遍历数据查找,如果展示层的游戏name与遍历到的某个数据的name一致
- // if (settings.data[key].name == gameName) {
- // //将id赋值给隐藏层input
- // $("#" + settings.inputID).val(settings.data[key].id);
- // $.createClearCross(settings.inputID);
- // }
- // }
- // } else {
- // alert("数据为空");
- // }
- // }
- // }, 100)
- // }
- if (settings.data !== "" || settings.data !== null) {
- //遍历数据
- for (var key in settings.data) {
- //再次遍历数据查找,如果隐藏域的值与遍历到的某个数据的id一致
- if (settings.data[key].id == hideID) {
- //将名字赋值给显示层input
- $("#" + settings.inputID + "_show").val(settings.data[key].name);
- $.createClearCross(settings.inputID,settings.clearHandlerFun);
- }
- }
- } else {
- alert("数据为空");
- }
- };
- /*
- *data:要遍历的数据,如渠道或者游戏
- *inputID:隐藏域input的id
- */
- /*****************输入的时候触发进行模糊搜索**********************/
- $.inputChange = function (element, settings) {
- //点击空白处,隐藏容器,即下拉框
- $("body").on("click", function () {
- $("#" + settings.inputID + "_selectBox").css({
- "display": "none"
- });
- });
- //监听显示层input的每次的输入
- $("#" + settings.inputID + "_show").on("input", function () {
- //获取显示层的值
- var word = $("#" + settings.inputID + "_show").val();
- var str = "";
- if (settings.data !== "" || settings.data !== null) {
- //遍历全部数据
- for (var key in settings.data) {
- if (word != "" && settings.data[key].name.match(word + ".*") != null) {
- str += '<a href="javascript:void(0);" onclick=FuzzySearchAdd("' + settings.inputID + '",this.innerHTML,this.getAttribute("id"),"' + settings.handlerFun + '","'+settings.clearHandlerFun+'") id="' +
- settings.data[key].id + '">' +
- settings.data[key].name +
- '</a>';
- }
- }
- }
- //将查询到的数据渲染进容器中
- $("#" + settings.inputID + "_selectBox").html(str).css({
- "display": "block"
- });
- })
- };
- /**
- * data:要遍历的数据,如渠道或者游戏
- * inputID:隐藏域input的id
- ***/
- $.fuzzyHandle = function (element, settings) {
- if (!settings.searchBtn) {
- return;
- }
- $("#" + settings.searchBtn).on("mouseover", function () {
- /**如果是直接复制渠道号进input#searchTxt输入框内的情况,没有去点击下拉出现的选项,就会出现没有对隐藏域input#channelID赋值的情况**/
- if ($("#" + settings.inputID + "_show").val().length > 0) {
- for (var key in settings.data) {
- if (settings.data[key].name == $("#" + settings.inputID + "_show").val()) {
- $("#" + settings.inputID).val(settings.data[key].id);
- }
- }
- }
- //如果把搜索内容清空,那么隐藏域里的内容也赋空,重新查询
- if ($("#" + settings.inputID + "_show").val().length == 0) {
- $("#" + settings.inputID).val("");
- }
- })
- };
- //新增选项清空
- $.createClearCross = function (inputID,Fun) {
- $("#" + inputID).parent().append('<span class="cross">×</span>');
- $("#" + inputID).parent().on("click", ".cross", function () {
-
- $("#" + inputID + "_show").val("");
- $("#" + inputID).val("");
-
- if(Fun!=""){
- eval(Fun+"()")
- }
- $(this).remove();
-
- })
- };
- //异步获取数据时
- if (settings.ajaxUrl != '' && settings.data.length == 0) {
- $.ajax({
- type: "GET",
- url: settings.ajaxUrl,
- dataType: "json",
- success: function (res) {
- settings.data = res;
- //执行以下方法
- $.createElm(this, settings);
- $.showQueryParam(this, settings);
- $.inputChange(this, settings);
- $.fuzzyHandle(this, settings);
- },
- });
- } else {
- //执行以下方法
- $.createElm(this, settings);
- $.showQueryParam(this, settings);
- $.inputChange(this, settings);
- $.fuzzyHandle(this, settings);
- }
- }
- })(jQuery, window, document);
- //改变选择项
- function FuzzySearchAdd(inputID, channelName, channelID, handlerFun,clearHandlerFun) {
- $("#" + inputID + "_show").val(channelName);
- //将渠道id赋值给隐藏的input,用这个隐藏的input提交
- $("#" + inputID).val(channelID);
- //选项容器隐藏
- $("#" + inputID + "_selectBox").css({
- "display": "none"
- });
- $("#" + inputID).parent().append('<span class="cross">×</span>');
- $("#" + inputID).parent().on("click", ".cross", function () {
- $("#" + inputID + "_show").val("");
- $("#" + inputID).val("");
-
- if(clearHandlerFun!=""){
- eval(clearHandlerFun+"()")
- }
-
- $(this).remove();
- })
- //游戏推荐管理用
- if($("#" + inputID + "_show").parent().parent().siblings("input[type=hidden]").length>0){
- //不为0,则已传过
- if($("#" + inputID + "_show").parent().parent().siblings("input[type=hidden]").eq(0).val()!=0){
- $("#" + inputID + "_show").parent().parent().siblings("input[type=hidden]").eq(1).val(2)
- }else{
- //等于0,则是新增
- $("#" + inputID + "_show").parent().parent().siblings("input[type=hidden]").eq(1).val(1)
- }
- }
- if (handlerFun !== "") {
- eval(handlerFun + "()");
- }
- };
|