jq实现级联下拉框效果
2010-07-19 15:15
239 查看
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>jquery5-级联下拉框</title> <link type="text/css" rel="stylesheet" href="css/chainselect.css"> <script type="text/javascript" src="js/jquery-1.3.2.js"></script> <script type="text/javascript" src="js/chainselect.js"></script> </head> <body> <div class="loading"> <div> <p><img src="image/loading.gif" alt="数据装载中"/></p> <p>数据装载中..................</p> </div> </div> <div class="car"> <span class="carname"> 汽车厂商: <select> <option value="" selected="selected">请选择厂商</option> <option value="BMW">宝马</option> <option value="Audi">奥迪</option> <option value="UW">大众</option> </select> <img src="image/closed.gif" alt="有数据"/> </span> <span class="cartype"> 汽车类型: <select></select> <img src="image/closed.gif" alt="有数据"/> </span> <span class="wheeltype"> 车轮类型: <select></select> </span> </div> <div class="carimage"> <p><img src="image/loadingyuan.gif" alt="图片装载中" class="carloading"></p> <p><img src="" alt="汽车图片" class="carimg"></p> </div> </body> </html>
.loading { width: 400px; /* margin-left: auto; margin-right: auto;*/ margin: 0 auto; visibility: hidden; } .loading p { text-align: center; } p { margin: 0; } .car { /*width: 500px; margin: 0 auto;*/ text-align: center; } .carimage { text-align: center; } .cartype, .wheeltype, .carimg, .carloading, .car img { display: none; }
$(function() { //找到3个下拉框 var carnameSelect = $(".carname").children("select"); var cartypeSelect = $(".cartype").children("select"); var wheeltypeSelect = $(".wheeltype").children("select"); var carimg = $(".carimg"); //给三个下拉框注册事件 carnameSelect.change(function() { //1.需要获得当前下拉框的值 var carnameValue = $(this).val(); //1.1只要第一个下拉框的内容有变化,第3个下拉框就要藏起来 wheeltypeSelect.parent().hide(); //1.2将汽车图片隐藏起来 carimg.hide().attr("src", ""); //2.如果值不为空,则将下拉框的值传送给服务器 if (carnameValue != "") { if (cartypeSelect.data(carnameValue)) { $.post("/selecttest/test", {keyword:carnameValue,type:"top"}, function() { //2.1接收服务器返回的汽车类型 if (data.length != 0) { //2.2解析汽车类型的数据,填充到汽车类型的下拉框中 cartypeSelect.html(""); $("<option value=''>请选择汽车类型</option>").appendTo("cartypeSelect"); for (var i = 0; i < data.length; i++) { $("<option value='" + data[i] + "'>" + data[i] + "<option>") .appendTo(cartypeSelect); } //2.2.1汽车类型的下拉框显示出来 cartypeSelect.parent().show(); //2.2.2显示image next找兄弟节点 carnameSelect.next().show(); } else { //2.3m没有任何汽车类型的数据 cartypeSelect.parent().hide(); carnameSelect.next().hide(); } //缓存 carnameSelect.data(carnameValue, data); }, "json"); } else { var data = cartypeSelect.data(carnameValue); //2.1接收服务器返回的汽车类型 if (data.length != 0) { //2.2解析汽车类型的数据,填充到汽车类型的下拉框中 cartypeSelect.html(""); $("<option value=''>请选择汽车类型</option>").appendTo("cartypeSelect"); for (var i = 0; i < data.length; i++) { $("<option value='" + data[i] + "'>" + data[i] + "<option>") .appendTo(cartypeSelect); } //2.2.1汽车类型的下拉框显示出来 cartypeSelect.parent().show(); //2.2.2显示image next找兄弟节点 carnameSelect.next().show(); } else { //2.3m没有任何汽车类型的数据 cartypeSelect.parent().hide(); carnameSelect.next().hide(); } } } else { //3.如果值为空,那么第2个下拉框所在的span要隐藏,第一个下拉框后面的指示图片 //也要隐藏 cartypeSelect.parent().hide(); carnameSelect.next().hide(); } }); cartypeSelect.change(function() { //1.需要获得当前下拉框的值 var carntypeValue = $(this).val(); //1,1将汽车图片隐藏起来 carimg.hide().attr("src", ""); //2.如果值不为空,则将下拉框的值传送给服务器 if (carntypeValue != "") { $.post("/selecttest/test", {keyword:carnameValue,type:"sub"}, function() { //2.1接收服务器返回的车轮类型 if (data.length != 0) { //2.2解析汽车类型的数据,填充到车轮类型的下拉框中 wheeltypeSelect.html(""); $("<option value=''>请选择车轮类型</option>").appendTo("wheeltypeSelect"); for (var i = 0; i < data.length; i++) { $("<option value='" + data[i] + "'>" + data[i] + "<option>") .appendTo(cartypeSelect); } //2.2.1车轮类型的下拉框显示出来 wheeltypeSelect.parent().show(); //2.2.2显示image next找兄弟节点 carntypeValue.next().show(); } else { //2.3m没有任何汽车类型的数据 wheeltypeSelect.parent().hide(); carntypeValue.next().hide(); } }, "html"); } else { //3.如果值为空,那么第3个下拉框所在的span要隐藏,第一个下拉框后面的指示图片 //也要隐藏 wheeltypeSelect.parent().hide(); carntypeValue.next().hide(); } }); wheeltypeSelect.change(function() { //1获取车轮类型 var wheeltypeValue = $(this).val(); var carnameValue = carnameSelect.val(); var cartypeValue = cartypeSelect.val(); //2根据汽车厂商名称 var carimgname = carnameValue + "_" + cartypeValue + "_" + wheeltypeValue + ".jpg"; //3修改汽车图片接点的src的值,让汽车图片显示出来 carimg.attr("src", "images/" + carimgname).show(); //4使汽车图片的节点显示出来 }); //给数据装载中的节点定义ajax事件,实现动画提示效果 $(".loading").ajaxStart(function() { $(this).css("visibility", "visible"); $(this).animate({ //淡入淡出效果 opacity:1 }, 0); }).ajaxStop(function() { $(this).animate({ //淡入淡出效果 opacity:0 }, 500); }); });
相关文章推荐
- JQuery实现级联下拉框效果实例讲解
- JQuery实现级联下拉框效果实例讲解
- jQuery+PHP+MySQL实现无限级联下拉框效果
- JQ实现仿163头部广告的下拉效果,在FF下显示时有个跳动的过程
- JQuery和ASP.NET分别实现级联下拉框效果
- ASP.NET实现级联下拉框效果实例讲解
- jQuery+PHP+MySQL实现无限级联下拉框效果
- 如何在SharePoint2007中实现下拉列表(DropDownList)的级联菜单效果
- jq实现地址级联效果
- JQuery和ASP.NET分别实现级联下拉框效果
- android 之 级联下拉 实现弹出和下拉两种效果
- ASP.NET实现级联下拉框效果实例讲解
- 用Ajax技术和dwr框架两种方式实现下拉列表的级联效果
- JavaScript实现下拉列表的级联
- jquery实现适用于门户站的导航下拉菜单效果代码
- Spring实现上拉刷新和下拉加载效果
- swift实现图片下拉放大,导航栏渐变效果
- JS实现灵巧的下拉导航效果代码
- 下拉实现头部图片放大效果,实现类似QQ,新浪个人中心界面
- 用javascript实现级联式下拉选框|用javascript实现省,市下拉级联