搜索框内容自动补全

在这里插入图片描述
方便操作给输入框设置一个id.

<input type="text" class="form-control" placeholder="Search" id="searchText">
<div id="completeShow" style="display: none;">
						<ul id='itemul' class='list-group'>		
						</ul>
<script>
			// 1.页面加载
			$(function () {
				// 2.为搜索框绑定一个键盘弹起事件
				$("#searchText").keyup(function () {
					//3.获得用户输入的数据
					var word = $(this).val();
					//4.非空判断
					if(word.trim()!=""){

					    // 12 每次发送请求之前,先清空ul里面的数据
						$("#itemul").empty();

						// 5.发送异步请求
						$.get("${pageContext.request.contextPath}/WordServlet",{word:word},function(data){
							// 6.非空判断
							if(data!=""){
							    // 10.有数据,li所在的div显示
								$("#completeShow").show();

								// 7.遍历
								$(data).each(function (i,m) {
									//alert(m.word);
									// 8.将数据显示在li标签中,并使用一个临时变量存储
									var temp = "<li class='list-group-item'><a href='#'>"+m.word+"</a></li>";
									// 9.将li显示在指定位置
									$("#itemul").append(temp);
                                });
							}
						},"json");
					}else{
					    // 10 没有数据,li所在的div隐藏
						$("#completeShow").hide();
                    }
                }).focus(function () {
					// 15.为搜索框绑定一个聚焦事件,判断li里面有没有数据
					if($("#itemul li").length>0){
					    // 16.有数据,显示li所在的div
                        $("#completeShow").show();
					}
                }).click(function () {
					// 17.禁用搜索框的鼠标单击事件
					return false;
                });

				// 13.为整个文档绑定一个鼠标单击事件
				$(document).click(function () {
					// 14.隐藏li所在的div
                    $("#completeShow").hide();
                });
            });
		</script>```
```java
@WebServlet(name = "WordServlet", urlPatterns = "/WordServlet")
public class WordServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
            IOException {
        response.setContentType("text/html;charset=utf-8");
        request.setCharacterEncoding("utf-8");
        // 获得请求参数word
        String word = request.getParameter("word");
        // 调用service层根据关键word,模糊查询的方法
        WordService service = new WordService();
        List<Word> words = service.findResultByWord(word);
        // 将查询结果转成json格式的数据(常见的有四种:JSONLIB JackSon Gson fastjason)
        /**
         * PDF:jackson
         * word:jsonlib
         * 课上:gson
         */
        /*Gson gson = new Gson();
        String json = gson.toJson(words);*/

        ObjectMapper om = new ObjectMapper();
        String json = om.writeValueAsString(words);

        System.out.println(json);
        // 响应
        response.getWriter().write(json)
    }
public class WordService {
    public List<Word> findResultByWord(String word) {
        WordDao dao = new WordDao();
        return dao.findResultByWord(word);
    }
public class WordDao {
    public List<Word> findResultByWord(String word) {
        //1.创建JdbcTemplate核心对象
        JdbcTemplate template = new JdbcTemplate(DRUIDUtils.getDataSource());
        //2.编写SQL语句
        String sql = "select * from word where word like ? or pinyin like ?";
        //3.设置实际参数
        Object[] params = {"%"+word+"%","%"+word+"%"};
        //4.执行查询操作
        List<Word> words = template.query(sql, new BeanPropertyRowMapper<>(Word.class), params);
        return words;
    }

当输入关键字,会在数据库中模糊查询,每次刷新清空列表,当鼠标点击其他位置不显示列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值