前端input框结合[chosenJquery]下拉框可输入可搜索

 input框结合[chosenJquery]下拉框可输入可搜索

       【html:】
        .....
        <td style="38%;text-align: left;padding-top: 13px;">
            <input type="text" name="COLLECTION_NAME" id="COLLECTION_NAME" value="${pd.COLLECTION_NAME}"  onblur="codeByName()" maxlength="50" placeholder="这里输入用例集名称" title="用例集名称" style="98%;"/>
            <input type="hidden" id="COLLECTION_ID" value=""/>
        </td>
        .....
        
        
        【js:】
        var arrayList;
        //用例集名称输入框智能搜索(加载页面时ajax获取下拉列表数据,然后获取焦点时显示列表[一次加载多次使用])        
        $(function() {
             var availableTags = [];
                 $.ajax({
                        type: "POST",
                        url: '<%=basePath%>cases/getCollectionName.do',
                        data: {},
                        dataType:'json',
                        cache: false,
                        success: function(data){
                            if("success" != data.result){
                                alert("出错啦,请与管理员联系!");
                                return false;
                             }else{
                                    //availableTags = data.jsonArray;
                                    $.each(data.jsonArray,function(index,jsonArrayList){
                                        arrayList = data.jsonArray;
                                        var strval = {label:jsonArrayList.COLLECTION_NAME,value:jsonArrayList.COLLECTION_NAME,id:jsonArrayList.COLLECTION_ID,code:jsonArrayList.COLLECTION_CODE};
                                        availableTags.push(strval);
                                    });
                                }        
                            }
                });
                   //定义下拉框列表        
                $("#COLLECTION_NAME").autocomplete({
                        minChars:0,
                        minLength: 0,
                        autoFill:true,
                        matchContains:true,
                        mustMatch:true,
                        matchSubset:true,
                        cacheLength:20,
                        source:availableTags,
                        /* function(request,response){
                                response($.map(availableTags,function(item){
                                    return {
                                            label:item.label,//下拉框显示值
                                            value:item.value,//选中后,填充到下拉框的值
                                            id:item.id,//选中后,填充到id里面的值
                                            code:item.code//选中后,填充到code里面的值    
                                    }
                                }));
                        }, */
                        select : function(event, ui) {
                                $(this).value = ui.item.label;
                                $("#COLLECTION_NAME").val(ui.item.value);
                                $("#COLLECTION_ID").val(ui.item.id);
                                $("#COLLECTION_CODE").val(ui.item.code);
                                //event.preventDefault();//阻止事件默认行为,防止输入框默认取ui.item.value
                                return false;
                        }
                        
                }).focus(function(){
                             $(this).autocomplete("search");
                                 return false;
                                 
                            });
                
          });
          
          //在input输入框按backspace(退格键)时清空valu值
          $(document).bind("keydown",function(e){
               e = e ? e : event;   
                 if(e.keyCode == 8){
                     var target=$.event.fix(e).target;
                     if($(target).attr("id") == "COLLECTION_NAME"){
                            $(target).val("");
                            forbidBackSpace(e);
                     }
                 }
         });
          
          //清空只读文本框中的用例集编号
        function forbidBackSpace(e) {
            var ev = e || window.event; //获取event对象
            var obj = ev.target || ev.srcElement; //获取事件源
            var t = obj.type || obj.getAttribute('type'); //获取事件源类型
            //获取作为判断条件的事件类型
            var vReadOnly = obj.readOnly;
            var vDisabled = obj.disabled;
            //处理undefined值情况
            vReadOnly = (vReadOnly == undefined) ? false : vReadOnly;
            vDisabled = (vDisabled == undefined) ? true : vDisabled;
            
            //当敲Backspace键时,事件源类型为密码、多行文本的,则退格键失效
            var flag2 = ev.keyCode == 8 && t != "password" && t == "text"
                    && t != "textarea";
            //判断
            if (flag2) {
                var startIsFocus = $("#COLLECTION_CODE").is(":focus");
                if (false == startIsFocus) {
                    $("#COLLECTION_CODE").val("");
                }
                return event.returnValue = false;
            };
        }
        //禁止后退键 作用于Firefox、Opera
        document.onkeypress = forbidBackSpace;
        //禁止后退键  作用于IE、Chrome
        document.onkeydown = forbidBackSpace;
          
          //手动填入用例集名称联动用例集合编号
          function codeByName(){
              $.each(arrayList,function(index,arrayList){
                if(arrayList.COLLECTION_NAME == $("#COLLECTION_NAME").val()){
                     $("#COLLECTION_CODE").val(arrayList.COLLECTION_CODE);
                     $("#COLLECTION_ID").val(arrayList.COLLECTION_ID);
                }
                             
            });
          }

原文地址:https://www.cnblogs.com/xiaweicn/p/14477606.html