`
fred_张浩
  • 浏览: 32325 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ajax+struts2实现仿百度模糊查询

阅读更多
效果如图:

实现原理:$.post()实现前台与后台的数据传输。

js代码:
<script type="text/javascript">
//设置文本框的内容  
function setContent(con,index){  
    var context=con.eq(index).text();  
    $("#content").val(context);  
}  
  
//设置背景颜色  
function setBkColor(con,index,color){  
    con.eq(index).css("background-color",color);  
}  
  
$(document).ready(  
    function(){  
        //获得输入框节点  
        var inputItem=$("#content");  
        var inputOffset=inputItem.offset();  
        var autonode=$("#auto");  
        //设置提示框隐藏  
        autonode.hide().css("border","1px black solid").css("position","absolute")  
        .css("top",inputOffset.top+inputItem.height()+5+"px")  
        .css("left",inputOffset.left+"px").width(inputItem.width()+"px");     
  
        //当键盘抬起时触发事件执行访问服务器业务  
        $("#content").keyup(  
            function(event){  
                var myevent=event||window.event;  
                var mykeyCode=myevent.keyCode;  
                //字母,退格,删除,空格  
                if(mykeyCode>=65&&mykeyCode<=90||mykeyCode==8||mykeyCode==46||mykeyCode==32){  
                    //清除上一次的内容  
                    autonode.html(" ");  
                    //获得文本框内容  
                    var word=$("#content").val();  
                    var timeDelay;  
                    if(word!=""){  
                        //取消上次提交  
                        window.clearTimeout(timeDelay);  
                        //延迟提交,这边设置的为400ms  
                        timeDelay=window.setTimeout(  
                            //将文本框的内容发到服务器  
                             $.post("accountsJson!getAccountCode.action",{id:word},  
                                function(data){
                                var dataObj=eval("("+data+")");
                                $.each(dataObj,function(idx,obj){
                               	 		var newNode=$("<div>").html(obj).attr("id",idx).addClass("pro");  
                                        //将返回内容附加到页面  
                                        newNode.appendTo(autonode);  
                                        //处理鼠标事件  
                                        var con=$("#auto").children("div");  
                                		//鼠标经过  
                                        newNode.mouseover(
                                            function(){  
                                                if(highlightindex!=-1){  
                                                    setBkColor(con,highlightindex,"white");  
                                                }  
                                                highlightindex=$(this).attr("id");  
                                                $(this).css("background-color","#ADD8E6");  
                                                setContent(con,highlightindex);  
                                            }     
                                        );  
                                        //鼠标离开  
                                        newNode.mouseout(  
                                            function(){  
                                                $(this).css("background-color","white");  
                                            }     
                                        );  
                                        //鼠标点击  
                                        newNode.click(  
                                            function(){  
                                                setContent(con,highlightindex);  
                                                highlightindex=-1;  
                                                autonode.hide();  
                                            }  
                                        );  
                                
                                });
                                //当返回的数据长度大于0才显示  
                                 if(dataObj.length>0){  
                                    autonode.show();  
                                }else{  
                                    autonode.hide();  
                                }  
                            })//post  
                            ,400);//settimeout  
                    }else{  
                        autonode.hide();  
                        highlightindex=-1;  
                    }  
                }else{  
                    //获得返回框中的值  
                    var rvalue=$("#auto").children("div");  
                    //上下键  
                    if(mykeyCode==38||mykeyCode==40){  
                        //向上  
                        if(mykeyCode==38){  
                            if(highlightindex!=-1){  
                                setBkColor(rvalue,highlightindex,"white");  
                                highlightindex--;  
                            }  
                            if(highlightindex==-1){  
                                setBkColor(rvalue,highlightindex,"white");  
                                highlightindex=rvalue.length-1;  
                            }  
                            setBkColor(rvalue,highlightindex,"#ADD8E6");  
                            setContent(rvalue,highlightindex);  
                        }  
                        //向下  
                        if(mykeyCode==40){  
                            if(highlightindex!=rvalue.length){  
                                setBkColor(rvalue,highlightindex,"white");  
                                highlightindex++;  
                            }  
                            if(highlightindex==rvalue.length){  
                                setBkColor(rvalue,highlightindex,"white");  
                                highlightindex=0;  
                            }  
                            setBkColor(rvalue,highlightindex,"#ADD8E6");  
                            setContent(rvalue,highlightindex);  
                        }  
                    }  
                    //回车键  
                    if(mykeyCode==13){  
                        if(highlightindex!=-1){  
                            setContent(rvalue,highlightindex);  
                            highlightindex=-1;  
                            autonode.hide();  
                        }else{  
                            alert($("#content").val());  
                        }  
                    }  
                }  
            }  
        );//键盘抬起  
  
        //当文本框失去焦点时的做法  
        inputItem.focusout(  
            function(){  
                //隐藏提示框  
                autonode.hide();  
            }     
        );  
    }  
);//reday




</script>

jsp代码:
<td>账户编号 :</td><td><input type = "text" id="content" name = "accounts.accountsCode"/><div id="auto"></div></td>


java代码:
/**
	 * 模糊查询
	 * */
	public String getAccountCode(){
		List<String> codeList = accountsService.getAccountCode(id);
		JSONArray jsonArray = JSONArray.fromObject(codeList);
		message = jsonArray.toString();
		return SUCCESS;
	}
	
struts2配置文件内容:
<package name="accountsJson" extends="json-default">
		<action name="accountsJson" class="com.zh.logistics.action.AccountsAction">
		<result type="json">
			<param name="root">message</param>
		</result>
		</action>
	</package>
  • 大小: 11.4 KB
分享到:
评论
1 楼 fred_张浩 2015-03-23  
为了适用全局,可以将JS部分内容抽象为一个JS文件,其中 $.post("accountsJson!getAccountCode.action",{id:word}...修改为
var url  = $(this).attr("src");
$.post(url,{id:word}...

jsp部分<td>账户编号 :</td><td><input type = "text" id="content" name = "accounts.accountsCode"/><div id="auto"></div></td>  修改为<td>账户编号 :</td><td><input type = "text" id="content" src = "accountsJson!getAccountCode.action"  name = "accounts.accountsCode"/><div id="auto"></div></td> ;


使用时只需要修改Input空间src属性即可。

欢迎各位指正

相关推荐

    Ajax+Struts2实现验证码验证功能

    我们这里采用的是ajax+struts2来做的这个验证。 我们新建一个web工程。然后需要导入struts的相应包。之后我们需要写一个类来生成验证码。 博客地址:http://blog.csdn.net/sdksdk0/article/details/51755489

    ZTree+Struts2+ajax+json实现checkbox权限树

    【标题】"ZTree+Struts2+ajax+json实现checkbox权限树"涉及的技术栈主要集中在前端的ZTree,后端的Struts2框架,以及数据交互中的Ajax和JSON。这个项目的核心目标是构建一个可复选的权限树形结构,用户通过勾选节点...

    ajax+struts2.0+jsp下拉列表级联

    在这个“ajax+struts2.0+jsp下拉列表级联”的示例中,我们将探讨如何利用这三个技术实现这种功能。 首先,AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页...

    Struts2+Jquery+Ajax

    8. 实例演示:使用Struts2+Jquery+Ajax实现动态加载数据或表单验证 "struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必...

    Ajax+struts+hibernate实现级联菜单

    Ajax+struts+hibernate实现级联菜单 Ajax+struts+hibernate实现级联菜单 Ajax+struts+hibernate实现级联菜单

    ajax+struts+jsp的用户名验证

    综上所述,"ajax+struts+jsp的用户名验证"是一个综合运用前端交互、后端处理和数据库查询的Web开发实践,涉及到的技术点广泛且深入,对于提升Web开发技能具有重要意义。开发者需要理解并熟练掌握Ajax、Struts、JSP...

    精通Java Web整合开发(Jsp+Ajax+Struts+Hibernate)(第2版).part1

    综上所述,《精通Java Web整合开发(Jsp+Ajax+Struts+Hibernate)(第2版)》这本书主要介绍了如何使用JSP、Ajax、Struts、Hibernate以及Spring等技术进行Web应用的开发,涵盖了这些技术的基本概念、核心功能及实际应用...

    精通Java Web整合开发(Jsp+Ajax+Struts+Hibernate)(第2版).part2

    Java Structs2.1 Spring3.0 Hibernate3.3 CSDN上没看到有人上传过,在别的地方找的,分享一下 part2/4,刚才上传后好像不成功,重新上传一下

    Ajax+Struts+HIbernate实现省市联动

    在这个“Ajax+Struts+Hibernate实现省市联动”的项目中,我们将深入探讨这三个技术如何协同工作以实现高效的用户体验。 Ajax(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下与服务器交换数据并...

    Ajax+Struts+hibernate二级联动查询(完整源码例子)

    【资源介绍】:Ajax+Struts+hibernate二级联动查询(完整源码例子) 【备注】: 亲爱的下载用户: 谢谢您光临CSDN阿Q资源中心! 本中心发布的资源均是经过本人测试通过后才发布的,请放心下载。如果您有不...

    ajax+struts分页

    本项目是关于“Ajax+Struts”实现分页的一个实例,旨在利用这两种技术的优势,提供一个高效、动态且用户友好的分页解决方案。 首先,让我们来理解一下核心概念: 1. **Ajax(Asynchronous JavaScript and XML)**...

    struts2+ajax+easyui+json+datagrid增删改查

    在"struts2+ajax+easyui+json+datagrid"的场景中,Struts2主要负责处理用户的请求,执行业务逻辑,并返回相应的响应数据。 **Ajax** (Asynchronous JavaScript and XML) 是一种在无需刷新整个页面的情况下更新部分...

    用php+ajax写的仿百度谷歌搜索下拉自动提示框效果

    这个项目“用php+ajax写的仿百度谷歌搜索下拉自动提示框效果”旨在实现类似百度和谷歌搜索引擎的实时搜索建议功能。下面我们将详细探讨这个过程涉及的关键知识点。 首先,我们要理解**PHP**(Hypertext ...

    jsp+ajax+struts

    【标题】"jsp+ajax+struts"是一个经典的Web开发技术组合,主要应用于构建动态、交互性强的Web应用程序。这个组合涉及到Java服务器页面(JSP)、异步JavaScript和XML(AJAX)以及Struts框架,这三者在Web开发中的角色...

    hibernate+struts2实现添删改查

    在实际项目中,前端通常会与Struts2的Action进行交互,通过Ajax请求实现异步的添删改查操作,提升用户体验。 总的来说,"Hibernate+Struts2"的组合提供了强大的Web应用开发能力,通过合理的配置和编程,可以构建出...

    精通Java Web整合开发:JSP+AJAX+Struts+Hibernate(光盘源码)

    ★★★ 提 醒 ★★★ 因为大小限制,这只是前8章的压缩包 !!!!!! 【【后续部分】】因为很大,我分开上传到了CSDN上面, 这是我的CSDN下载频道的网址: ...★★★★★★★★★★★★★★★★★★★★★★★★...

    用案例学Java Web整合开发:Java+Eclipse+Struts 2+Ajax

    Java Web整合开发是构建Web应用程序的关键技术,涵盖了Java语言、Eclipse集成开发环境(IDE)、Struts 2框架以及Ajax异步JavaScript和XML技术。这个主题深入探讨了这些技术如何协同工作,创建出高效、用户友好的Web...

    Ajax+Struts1.x 登陆程序源代码(详解)

    用AJAX+STRUTS写的登陆程序,并且附加了超级详尽的源码注释,并且代码分离非常清晰。...总之,就是整个AJAX+STRUTS项目登陆程序打包,可以在ECLIPSE下导入,在TOMCAT5.X下运行(这需要将下载包当中的sql先执行)

    java web 实战宝典_JSP+Servlet+Struts_2+Hibernate+Spring+Ajax

    根据标题、描述和部分内容,知识点覆盖范围主要集中在Java Web开发领域,并且包括了JSP、Servlet、Ajax以及SSH框架(Struts 2、Spring、Hibernate)的技术整合和实战案例分析。 JSP(Java Server Pages)是一种动态...

    ajax+jsp+Hibernate实现的Blog源代码

    ajax+jsp+Hibernate实现的Blog源代码

Global site tag (gtag.js) - Google Analytics