`
拓子轩
  • 浏览: 211911 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

jquery实战-级联下拉框

    博客分类:
  • js
阅读更多

2. 级联下拉框
chainselect.html

<html>
<head>
<title>级联下拉框</title>
<meta http-equiv=”Content-Type” content=”text/html;charset=UTF-8”>
<link type=”text/css” rel=”stylesheet” href=”css/chainselect.css” />
<script type=”text/javascript” src=”js/jquery.js”></script>
<script type=”text/javascript” src=”js/ chainselect.js”></script>
</head>
<body>
<div class=”loading”>
    <p><img src=”imags/data-loading.gif” alt=”数据转载中” /></p>
    <p>数据转载中……</p>
</div>
<div class=”car”>
    <span class=”carname”>
    汽车厂商:
    <select>
        <option value=”” selected=”selected”>请选择汽车厂商</option>
        <option value=”BMW”>宝马</option>
        <option value=”Audi >奥迪</option>
        <option value=”VM >大众</option>
    </select>
    <img src=images/pfeil.gif” alt=”有数据” />
    </span>
    <span class=”cartype”>
    汽车类型:
    <select></select>
    <img src=”images/pfeil.gif” alt=”有数据” />
    </span>
    <span class=”whelltype”>
    车轮类型:
    <select></select>
    </span>
</div>
<div class=”carimage”>
   <p> <img src=”images/img-loading.gif” alt=”图片装载中” class=”carloading” /></p>
   <p> <img src=”” alt=”汽车图片” class=”carimg”/></p>
</div>

</body>
</html>

 

chainselect.css

.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 atuo;
text-align: center;
}
.carimage {
    text-align: center;
}
.cartype , .wheeltype , .carloading, .carimg, .car img {
    display: none;
}

 
chainselect.js

$(document).ready(function() {
//找到三个下拉框
var carnameSelect = $(“.carname”).children(“select”);
var cartypeSelect + $(“.cartype”).children(“select”);
var wheeltypeSelect = $(“.whelltype”).children(“select”);
var carimg = $(“.carimg”);
//给三个下拉框注册事件
carnameSelect.change(function(){
    //1. 需要获得当前下拉框的值
    var carnameValue = $(this).val():
    wheeltypeSelect.parent().hide();
    carimg.hide().attr(“src”,””);
    //2. 如果值不为空,则将下拉框的值传送给服务器
    if(carnameValue != “”) {
        if(!carnameSelect.data(carnameValue)) {
        $.post(“ChainSelect”,{keyward: carnameValue,type: top}, function(data){
//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);
          cartypeSelect.parent().show();  //汽车类型的下拉框显示出
          carnameSelect.next().show();   //第一个下拉框后面的指示图片显示出来
        }
} else {
                //2.3 没有任何汽车类型的数据
                cartypeSelect.parent().hide();
                carnameSelect.next().hide();
            }
            carnameSelect.data(carnameValue, data);
}, ”json”)
        } else {
            var data = cartypeSelect.data(carnameValue);
            if(data.length != 0) {
    cartypeSelect.html(“”);
    $(“<option value=’’>请选择汽车类型</option>”).appendTo(cartypeSelect);
        for(var  i = 0; i < data.length; i++) {
          $(“<option value=’” + data[i] + “’>” + data[i]  + “</option>”).appendTo(cartypeSelect);
          cartypeSelect.parent().show();  //汽车类型的下拉框显示出
          carnameSelect.next().show();   //第一个下拉框后面的指示图片显示出来
        }
} else {
                //2.3 没有任何汽车类型的数据
                cartypeSelect.parent().hide();
                carnameSelect.next().hide();
            }

        }
    } else {
    //3. 如果值为空,那么第二个下拉框所在span要隐藏起来,第一个下拉框后面的指示图片也要隐藏
    cartypeSelect.parent().hide();
    carnameSelect.next().hide();
    }
});
cartypeSelect.change(function(){
//1. 需要获得当前下拉框的值
    var cartypeValue = $(this).val():
carimg.hide().attr(“src”,””);;
    //2. 如果值不为空,则将下拉框的值传送给服务器
    if(cartypeValue != “”) {
        if(!cartypeSelect.data(cartypeValue)) {
        $.post(“ChainSelect”,{keyward: cartypeValue,type: sub}, function(data){
//2.1 接收服务器返回的汽车类型
            if(data.length != 0) {
//2.2 解析汽车类型的数据,填充到车轮类型下拉框中
    carwheelSelect.html(“”);
    $(“<option value=’’>请选择车轮类型</option>”).appendTo(wheeltypeSelect);
        for(var  i = 0; i < data.length; i++) {
          $(“<option value=’” + data[i] + “’>” + data[i]  + “</option>”)
.appendTo(wheeltypeSelect);
          wheeltypeSelect.parent().show();  //车轮类型的下拉框显示出
          cartypeSelect.next().show();   //第二个下拉框后面的指示图片显示出来
        }
} else {
                //2.3 没有任何汽车类型的数据
                wheeltypeSelect.parent().hide();
                cartypeSelect.next().hide();
            }
            cartypeSelect.data(cartypeValue,data);
}, ”json”)
}else {
    var data = cartypeSelect.data(cartypeValue);
if(data.length != 0) {
//2.2 解析汽车类型的数据,填充到车轮类型下拉框中
    carwheelSelect.html(“”);
    $(“<option value=’’>请选择车轮类型</option>”).appendTo(wheeltypeSelect);
        for(var  i = 0; i < data.length; i++) {
          $(“<option value=’” + data[i] + “’>” + data[i]  + “</option>”)
.appendTo(wheeltypeSelect);
          wheeltypeSelect.parent().show();  //车轮类型的下拉框显示出
          cartypeSelect.next().show();   //第二个下拉框后面的指示图片显示出来
        }
} else {
                //2.3 没有任何汽车类型的数据
                wheeltypeSelect.parent().hide();
                cartypeSelect.next().hide();
            }

}
    } else {
    //3. 如果值为空,那么第三个下拉框所在span要隐藏起来,第一个下拉框后面的指示图片也要隐藏
    wheeltypeSelect.parent().hide();
    cartypeSelect.next().hide();
    }
});

wheeltypeSelect.change(function(){
    //1. 获取车轮类型
    var wheeltypeValue = $(this).val();
    //2. 根据汽车厂商名称,汽车类型和车轮类型的到汽车图片的文件名
    var carnameValue = carnameSelect.val();
    var cartypeValue = cartypeSelect.val();
    var carimgname = carnameValue + “_” + cartypeValue + “_” + wheeltypeValue + “.jpg”;
    carimg.hide();
$(“.carloading”).show(); //显示loading的图片
    //通过javascript中的Image对象预装载图片
    var cacheimg = new Image();
    $(cacheimg).attr(“src”,”images/” + carimgname).load(function(){
        $(“.carloading”).hide(); //隐藏loading图片
        carimg.attr(“src”,”images/” + carimgname).show();
});
//3. 修改汽车图片节点的src的值,让汽车图片显示
    //carimg.attr(“src”,”images/” + carimgname).show();
});

//给数据装载中的节点定义ajax事件,实现动画提示效果
$(“.loading”).ajaxStart(function(){
    $(this).css(“visibility”,”visible”);
$(this).animate({
        opacity: 0;
},0);
}).ajaxStop(function(){
    //$(this).fadeOut(500);
    $(this).animate({
        opacity: 0;
},500);
});
});

 

知识宝典
1. img标签的alt属性要写上,在图片尚未装载进来或图片不存在时,这个属性的文字信息会显示出来
2. select表示下拉框,下拉框的每一项都是一个option,option开始结尾标签中的内容会显示在页面上,value属性的值则是用于在Jquery中用val方法获取并发送给服务器的。定义了selected的属性值为selected时,表示当前option被选中
3. div元素居中显示的方法:给div设定宽度,然后margin-left和margin-right的值都为auto.简化方法是margin:0 auto;
4. html的p标签表示一个段落的内容,其中的内容会独占一行或多行,后面的内容会另起一行显示
5. 为了让p中文字和图片居中,可以使用text-align属性,属性值为center。p标签默认有margin-top和margin-bottom的值,需要的话可以通过css清楚
6. visibility的属性值为hidden是,元素隐藏,但是和display为none不同的是,在页面中仍然占据一定的空间,只是不显示
7. 多个选择器如果有相同的属性值,可以放在一起定义,选择器之间用逗号分隔
8. change方法对于javascript中的onchange事件,可以处理下拉框内容变化的事件
9. parent方法可以获得一个节点的父节点
10. next方法可以获得一个节点的下一个兄弟节点,对应的previous方法可以获得一个节点的上一个兄弟节点
11. $.post方法可以和服务器端发起post的异步请求。第一个参数是请求的服务器地址,第二个参数是发送给服务器端的数据,参数是Javascript的对象,采用名值对的方式表示,第三个参数是回调方法,第四个参数指示服务器端返回的数据类型,Jquery会根据这个参数帮我们进行转换。get方法只有第二个参数不同,其他几个参数用法相同
12. Javascript中的简单对象定义方式是{key1:value1, key2:value2}
13. JSON的数据格式其实就是Javascript中的一个对象或数据定义的文本格式内容,比如{kery1:value1, key2:[1,2,3]} 或[1,2,{key2:value2}]
14. 可以直接$(“<option></option>”)的方法来建立下拉框中的选项,然后用appendTo这样的方法加入到下拉框中
15. attr方法可以设置或获取某一个节点的属性值
16. ajaxStart在每一个Jquery发出的ajax请求开始前执行,ajaxStop在Jquery队列中所有的ajax请求结束后执行,ajaxComplete在每一个Jquery发出的ajax请求结束后执行
17. fadeOut和fadeIn可以实现淡出淡入的效果,参数内容和slideUp, slideDown方法类似
18. animate方法可以实现任意的动画效果,可以控制某个css属性在某个事件内进行变化,从而达到动画的效果
19. opacity可以改变元素的透明度,IE中使用过滤器实现,100表示完全显示,0表示完全透明,非IE浏览器使用opacity属性,1表示完全显示,0表示透明。Jquery在animate方法中屏蔽了浏览器差异,直接使用opacity就可以达到淡入淡出的效果
20. data方法可以用于缓存数据。缓存可以提高系统的运行效率,降低服务器端的符合
21. 可以使用Javascript中的Image对象来预装载图片,这样可以知道图片何时装载完成,以便给出一些图片装载的提示信息
22. load方法可以对应Javascript中的onload事件,本例中用于捕捉图片加载完成的事件

分享到:
评论

相关推荐

    jQuery实现级联下拉框实战(5)

    在本文中,我们将探讨如何使用jQuery实现级联下拉框的效果,这是一个常见的前端交互功能,常用于数据筛选和表单填写。级联下拉框允许用户在一个下拉框中做出选择后,根据所选内容动态更新下一个下拉框的选项。这种...

    JQuery实战第五讲:级联下拉框效果

    JQuery实战第五讲:级联下拉框效果,如果用在《MVC中更加合适

    JQuery可编辑表格、横向纵向菜单、标签页、级联下拉框、窗口

    在IT领域,jQuery是一个广泛使用的JavaScript库,它极大地简化了HTML文档遍历、事件处理、动画和Ajax...而提供的"JQuery实战视频教程SRC&PPT"可能包含了具体的代码示例和讲解,对于深入理解和应用这些概念非常有帮助。

    王兴魁jQuery实战系列视频

    教程名称:王兴魁jQuery实战系列视频课程目录:【】CSDN ITCAST王兴魁jQuery参考代码...JQuery实战第五讲:级联下拉框效果【】JQuery实战第四讲:标签页效果 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    JQuery实战案例

    几个jquery的使用案例 JQuery实战第一讲:概述、环境准备及入门实例 JQuery实战第二讲:可以编辑的表格 JQuery实战第三讲:横向纵向菜单 ...JQuery实战第五讲:级联下拉框效果 JQuery实战第六讲:窗口效果

    JQuery实战视频教程的SRC&PPT;

    5. **JQuery实战第五讲:级联下拉框效果**:级联下拉框是常见于表单中的交互元素,用于根据用户在一个下拉框的选择来改变另一个下拉框的内容。这一讲将涵盖如何用JQuery处理这种依赖关系,以及如何有效地异步加载...

    jQuery实战(图书+实例)

    在“JQuery实战第五讲:级联下拉框效果”中,我们将学习如何实现级联选择的效果,即一个下拉框的选项根据另一个下拉框的选择动态更新。这种功能常见于多级分类或关联数据的展示,需要掌握如何动态修改DOM和处理异步...

    王兴魁JQuery实战视频教程

    JQuery实战第一讲:概述、环境准备及入门实例JQuery实战第二讲:可以编辑的表格JQuery实战第三讲:横向纵向菜单JQuery实战第四讲:标签页效果JQuery实战第五讲:级联下拉框效果JQuery实战第六讲:窗口效果 ...

    jQuery实战代码

    在本文中,我们将深入探讨通过标题和描述所提及的jQuery实战案例,包括级联下拉框效果、横向纵向菜单、可编辑的表格、标签页效果、窗口效果以及环境准备与入门实例。 **1. jQuery实战第一讲:概述与环境准备及入门...

    JQuery实战视频教程源码及PPT

    第五讲重点讲解“级联下拉框效果”,这是一个在表单设计中常用的功能,用于实现联动选择。通过JQuery,我们可以实现下拉框的联动逻辑,使得用户在选择某个选项时,其他下拉框的内容能够自动更新。 最后的第六讲关注...

    JQuery实战视频教程源码(王兴魁)

    - "JQuery实战第五讲:级联下拉框效果":在这一部分,你将学习到如何实现下拉框之间的联动效果,这对于表单数据的处理和前端验证非常重要。 - "JQuery实战第六讲:窗口效果":这节课将涉及窗口弹出、拖动、缩放等...

    《JQuery实战]》实例源码

    1. **JQuery实战第五讲:级联下拉框效果** - 在这个实例中,我们将学习如何使用JQuery来实现下拉列表之间的联动效果,即一个下拉框的选择会影响另一个下拉框的显示内容。这涉及到JQuery的`change`事件监听,以及...

    Jquery实战

    **jQuery实战** jQuery是一款高效、简洁且功能丰富的JavaScript库,它极大地简化了JavaScript代码的编写,使得网页交互变得更加简单和直观。本套学习资料专为初学者和Web开发人员设计,无论你是Java还是.NET开发者...

    jquery几个经典例子

    5. **JQuery实战第五讲:级联下拉框效果** - **级联下拉框**:当一个下拉框的选择影响另一个下拉框的内容时,可以使用jQuery监听第一个下拉框的`change`事件,然后根据选择的值动态更新第二个下拉框的选项。 6. **...

    jQuery视频教程及详细说明

    `JQuery实战视频教程SRC&PPT[学习库www.xuexi111.com]`很可能是视频教程的源文件和PPT资料,供进一步学习参考。 通过本教程的学习,你将能够熟练运用jQuery进行网页开发,提升网页的交互性和动态性,无论你是初学者...

    jquery页面显示

    "JQuery实战第五讲:级联下拉框效果"将带你走进下拉菜单的世界,学习如何创建具有关联性的下拉列表,这对于处理复杂的表单数据和提供层次化的选项选择很有帮助。 在"JQuery实战第六讲:窗口效果"中,你会接触到...

    jquery-easyui1.9

    《jQuery EasyUI 1.9 全面解析与实战指南》 jQuery EasyUI 是一个基于 jQuery 的前端开发框架,它提供了丰富的组件和便捷的API,极大地简化了网页界面的构建工作。EasyUI 1.9 版本是该框架的一个稳定版本,具有较高...

    Bootstrap+jfinal实现省市级联下拉菜单

    最后,文章提供了进一步学习Bootstrap的资源,包括Bootstrap的学习教程、实战教程和插件使用教程,鼓励读者深入探索Bootstrap的更多功能和可能性。 总的来说,实现省市级联下拉菜单的关键在于前后端数据的交互和...

    easyui项目实战

    此外,EasyUI 提供了丰富的 API 和插件扩展,如树形表格(treegrid)、级联下拉框(combobox)等,可以帮助我们构建复杂的交互场景。在项目实战中,还可以结合 AJAX 技术实现异步加载数据,提高用户体验。 总之,...

    jQuery EasyUI

    - **菜单(Menu)**:创建下拉或级联菜单,便于用户导航。 - **表单组件**:如日期选择器(DatePicker)、时间选择器(TimePicker)、滑块(Slider)等,增强表单输入体验。 - **布局(Layout)**:用于划分页面...

Global site tag (gtag.js) - Google Analytics