`
arthurr
  • 浏览: 9238 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

DWR实现简单的内容自动补全

阅读更多
ajax(DWR框架)实现简单的内容自动补全


dwr.xml中的配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">

<dwr>
<allow>
   <create creator="new" javascript="JUserChecker">
    <param name="class" value="com.biz.UserCheck" />
    <include method="check" />
    <include method="test" />
    <include method="getList" />
    <include method="test1" />
   </create>
   <convert converter="bean" match="com.entity.TblUser" />
</allow>
</dwr>

以下为服务器端类:

public class UserCheck {

/**
* 自动补全
*/
public List getList(String key){
   String hql = " select user.uname from TblUser as user where user.uname like'"+key+"%'";
   Session session = HibernateSessionFactory.getSession();
   Query query = session.createQuery(hql);
   List list = query.list();
   System.out.println("========listSize:"+list.size());
   return list;
}
}

以下为页面中使用的js:

<!-- dwr/路径和web.xml映射路径对应 -->
<script type='text/javascript' src='dwr/interface/JUserCheck.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>

<script type="text/javascript">
var widthDiv;
function showUser(obj){
 
widthDiv = obj.offsetWidth;//文本框的宽度,层随此宽度
var uname = obj.value;
JUserChecker.getList(uname,innerContext);

}
//自动补全
function innerContext(args){
   var content = "<table width=100%>";
   for(var i in args){
    content+="<tr width=\"100%\" onmouseover=\"this.style.background='#CCCCCC'\" onmouseout=\"this.style.background=''\">";
    content+="<td onclick='sel(this)' style='cursor:hand'>";//添加点击事件和手形样式
    content+=args[i];//内容
    content+="</td></tr>";
   }
    content += "</table>";
   document.getElementById("showUser").style.display="block";//显示层
   document.getElementById("showUser").style.width=widthDiv;//设定层的宽度和文本框同宽
   document.getElementById("showUser").innerHTML=content;
}
function sel(obj){
   document.getElementById("item.uname").value=obj.innerHTML;//把点击选中的内容赋值给文本框
   document.getElementById("showUser").style.display="none";//层隐藏
}
</script>



页面主要代码如下:

<table align="center" border="0" cellpadding="0" cellspacing="0">
    <tr>
     <td>用户注册:</td>
     <td>&nbsp;</td>
    </tr>
    <tr>
     <td colspan="2"><hr/></td>
    </tr>
    <tr>
     <td>自动补全:</td>
     <td><input name="item.uname" onkeyup="showUser(this)" autocomplete = "off" />
     </td>
    <tr><td></td><td valign="top">
   <div style="border:1px; width:150px;background-color:#999999;position:absolute;z-index:2;overflow:scroll;" id="showUser"></div>
    </td>
  


   </table>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics