效果图
css样式
<style>
#nodename-dropdown {
display : none;
position : absolute;
z-index : 1000;
width : 100%;
border : 1px solid #ccc;
background-color : #fff;
max-height : 200px;
overflow-y : auto;
}
.dropdown-item {
padding : 8px 10px;
cursor : pointer;
}
.dropdown-item:hover {
background-color : #f0f0f0;
}
</style>
html部分
< form id = " formId" >
< input class = " form-control" id = " areacode" name = " areacode" type = " hidden" />
< div class = " select-list" >
< ul>
< li>
< input type = " text" name = " nodename" id = " nodename" placeholder = " 台账单位" autocomplete = " off" />
< div id = " nodename-dropdown" class = " dropdown-content" > </ div>
</ li>
</ ul>
</ div>
</ form>
js部分(参数需根据需求调整)
$ ( function ( ) {
$ ( '#nodename' ) . on ( 'input' , function ( ) {
var query = $ ( this ) . val ( ) ;
var inputWidth = $ ( this ) . outerWidth ( ) ;
$ ( '#nodename-dropdown' ) . css ( 'width' , inputWidth) ;
if ( query. length > 0 ) {
$. ajax ( {
url : prefix + '/getNodeNameByAreaCode' ,
type : 'POST' ,
data : {
nodename : $ ( "#nodename" ) . val ( ) ,
areacode : $ ( "#areacode" ) . val ( )
} ,
success : function ( response ) {
var $dropdown = $ ( '#nodename-dropdown' ) ;
$dropdown. empty ( ) ;
if ( response. length > 0 ) {
$. each ( response, function ( index, item ) {
$dropdown. append ( '<div class="dropdown-item" data-value="' + index + '">' + item + '</div>' ) ;
} ) ;
$dropdown. show ( ) ;
} else {
$dropdown. hide ( ) ;
}
} ,
error : function ( ) {
$ ( '#nodename-dropdown' ) . hide ( ) ;
}
} ) ;
} else {
$ ( '#nodename-dropdown' ) . hide ( ) ;
}
} ) ;
$ ( document) . on ( 'click' , '.dropdown-item' , function ( ) {
var selectedValue = $ ( this ) . text ( ) ;
$ ( '#nodename' ) . val ( selectedValue) ;
$ ( '#nodename-dropdown' ) . hide ( ) ;
} ) ;
$ ( document) . click ( function ( e ) {
if ( ! $ ( e. target) . closest ( '.select-list' ) . length) {
$ ( '#nodename-dropdown' ) . hide ( ) ;
}
} ) ;
} )
java代码部分
@RequestMapping ( "/getNodeNameByAreaCode" )
@ResponseBody
public List < String > getNodeNameByAreaCode ( @RequestParam ( "areacode" ) String areacode, @RequestParam ( "nodename" ) String nodename) {
List < String > list = tbCertlogService. selectNodeNameListByAreaCode ( areacode, nodename) ;
return list;
}
maaper部分(注意传递两个参数时Mapper层需要对参数做处理,否则xml中parameterType无法正常接收两个参数值)
public List<String> selectNodeNameListByAreaCode(@Param("areacode")String areacode, @Param("nodename")String nodename);
最后xml部分查询语句,参考,注意模糊查询以及去重
< select id = " selectNodeNameListByAreaCode" resultType = " String" >
select DISTINCT nodename
from tb_certlog
< where>
< if test = " areacode != null and areacode != '' and areacode!='000'" >
and AREACODE = #{areacode}
</ if>
< if test = " nodename != null and nodename != ''" >
and nodename LIKE CONCAT('%',#{nodename},'%')
</ if>
</ where>
</ select>