一个模拟搜索自动补全的实例(超简单)

前端之家收集整理的这篇文章主要介绍了一个模拟搜索自动补全的实例(超简单)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

很早就像写一个模拟Google搜索自动补全的实例,那时候刚学点js,css也玩不转,即使网上有些demo,看起来也很费力。写了两次只是勉强能出来待筛选项,不能自由选择。这两天学了点jQuery的ajax,配合一点资料,自己成功实现了这个功能,jQuery的口号真是名副其实----The Write Less,Do More.


CSS

<style type="text/css" >
.listBox{
position: relative;
left: 10px;
margin: 10px;
width: 200px;
background-color: #000;
color: #fff;
border: 2px solid #000; 
}

.nameslist{
margin: 0px;
padding: 0px;
list-style: none;
}

.hover{
background-color: cyan;
color: red;
}

</style>

js
<script type="text/javascript">
$(document).ready(function(){
     $('.listBox').hide();
     $('.userid').keyup(function(){
	    var user = $('.userid').val();
	    var data = 'username='+user;
	    $.ajax({
	        type:"POST",url:"AutoServlet",data:data,success:function(html){
	  			$('.listBox').show();
	  			$('.nameslist').html(html);
	  			$('li').hover(
	  				function(){
	  	 				 $(this).addClass('hover');
	  				},function(){
	  					 $(this).removeClass('hover');
	  				}
	  			);
	    		$('li').click(function(){
	     			 $('.userid').val($(this).text());
	     			 $('.listBox').hide();
	    		});
	 	   }	
		});
		return false;
	});
});

</script>

HTML元素

<form>
  <span class="label">Enter username</span>
  <input type="text" name="userid" class="userid"/>
  <div class="listBox">
  	<div class="nameslist">
  	</div>
  </div>
</form>


后台servlet

/**
 * @author fcs
 * AutoComplete demo
 * 2014-10-25
 */
public class AutoServlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest request,HttpServletResponse response)
			throws ServletException,IOException {
		String sname = request.getParameter("username");
		System.out.println("sname:"+sname);
		PrintWriter pw = response.getWriter();
		try {
			Class.forName("com.MysqL.jdbc.Driver");
			Connection con = DriverManager.getConnection("jdbc:MysqL://localhost:3306/test","root","root");
			PreparedStatement ps = con.prepareStatement("select name from auto where name like '%"+sname+"%'");
			ResultSet rs = ps.executeQuery();
			while(rs.next()){
				pw.print("<li>"+rs.getString("name")+"</li>");
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (sqlException e) {
			e.printStackTrace();
		}
	}
}


1.输入一个字母a,自动触发数据库检索,然后将结果返回到页面


2.鼠标悬浮效果


3.点击选中结果:

原文链接:https://www.f2er.com/ajax/164253.html

猜你在找的Ajax相关文章