autocomplete 异步联想下拉数据

1.  首先定义一个文本框

<input   type = "hidden"   id = "somethingId"   value = "-1" >
<input   type = "text"   class = "form-control grayTips"  

id="somethingName" placeholder="请输入名称">

2.  js处理

var somethingData= null; // 名称联想的数据源

/** 名称联想输入 */
$( "#somethingName" ).autocomplete({
   source: somethingData ,
   select: function (event, ui){
            $( "#somethingId" ).val( ui.item.value );
            $( "#somethingName" ).val( ui.item.label );
            // 必须阻止事件的默认行为,否则 autocomplete 默认会把ui.item.value设为输入框的value值
            event.preventDefault();    
        }
   });


/** 初始化名称列表信息 */
function qrySomethingInfo(){
     $.ajax({
           url : ctx + "/something/ingcomplete.html" ,
           async : true ,
           type : "POST" ,
           dataType : "json" ,
           data : {
           },
           success : function (data) {
                 for ( var i=0;i<data.obj.length;i++){
                       var item = data.obj[i];
                      somethingData .push({
                        'label' :item.SOMETHING_NAME,
                        'value' :item.SOMETHING_ID                    
                     });
                }
           }
     });
}

3.  后台处理
/**
  * 名称列表查询
  *
  * @param request
  * @param modelMap
  * @return
  */
@RequestMapping (value = "ingcomplete" )
@ResponseBody
public AjaxJson autocompleteSomething(HttpServletRequest request , ModelMap modelMap , HttpSession session ) {
     AjaxJson ajaxJson = new AjaxJson();
      /** 获取数据 */
     // 获取系统当前用户所属公司
     String companyId = StringUtil. nvl (SessionManager. getUser ().getFarmId());
      try {
          /** 检索条件 */
         Map<String, String> param = new HashMap<String, String>();
          param .put( "companyId" , companyId );
          /** 查询与当前登录人关联的某名称列表 */
         List<Map> somethingList = somethingServiceI .searchSomethingList( param );
          ajaxJson .setObj( somethingList );
          ajaxJson .setMsg(CmnConstance. COMMIT_SUCCESS_MSG );
          ajaxJson .setSuccess( true );
      } catch (Exception e ) {
          e .printStackTrace();
          ajaxJson .setMsg(CmnConstance. SYSTEM_ERROR_MSG );
          ajaxJson .setSuccess( false );
      }
          return ajaxJson ;
}

猜你喜欢

转载自blog.csdn.net/qq_35606175/article/details/80861054