html三级联动下拉列表,jquery+json 通用三级联动下拉列表

该博客介绍了如何使用JQuery修改原始代码,使其支持IE、Firefox浏览器,以及如何通过JSON数据格式构建三级联动下拉框。作者提供了XML和JSON两种数据来源的实现方式,并讨论了数据的加载速度和灵活性。还包含了一个PHP数据生成Demo及代码示例。
摘要由CSDN通过智能技术生成

Author: shaoyun

Email: shaoyun (at) yeah.net

Date: 2010-03-10 02:03

Blog: http://shaoyun.cnblogs.com/

用Jquery实现,原始代码只支持IE,这里我改了一下,我的代码里面有三个版本的实现

第一个是通过读取XML构建,支持IE/firefox,chrome不支持,有兴趣的可以将读取XML的部分改成AJAX的方式,这样chrome支持就不成问题

第二个是采用Json数据格式构建,是我的第二次尝试改进

第三个与第二个其实是一样的,只不过将数据分离到JS文件中,我的代码中有一个ASP文件,是调用数据库生成Json省市区数据的,如果页面直接调用ASP文件,速度会很慢,生成JS文件后直接调用就要快的多,而且这部分数据一般不会改动

更新记录:

++2010-04-19 12:11:24

多加了一个插件的例子,其实不算插件,就是一函数,为什么不写成插件,只是基于灵活性的考虑,

让select可以放在页面的任何位置,而不是局限在div、table、td等页面元素内

参数类似下面,s1/s2/s3配置select的id,v1/v2/v3为默认值,如果不想设置请设置为null,或者直接不设置

参数配置如下,配置select的三个ID和默认值就行,无默认值填写为null

var defaults = {

s1:'Select1',

s2:'Select2',

s3:'Select3',

v1:null,

v2:null,

v3:null

};

这算是第四个例子,目录下的php文件是服务端数据的生成Demo,用作使用的参考

数据格式定义类似如下:

var threeSelectData={

"省份":{val:"",items:{"城市":{val:"",items:{"区县":""}}}},

"beijing":{val:"01",items:{

"bj-01":{val:"0101",items:{

"bj-01-01":"010101"

}},

"bj-02":{val:"0102",items:{

"bj-02-01":"010201",

"bj-02-02":"010202"

}}

}},

"shanxi":{val:"02",items:{}},

"guangzhou":{val:"02",items:{}}

};

代码例子:

/*

通用三级联动说明

参数配置如下,配置select的三个ID和默认值就行,无默认值填写为null

var defaults = {

s1:'Select1',

s2:'Select2',

s3:'Select3',

v1:null,

v2:null,

v3:null

};

*/

var defaults = {

s1:'Select1',

s2:'Select2',

s3:'Select3',

v1:120000,

v2:120200,

v3:120224

};

$(function(){

threeSelect(defaults);

});

function threeSelect(config){

var $s1=$("#"+config.s1);

var $s2=$("#"+config.s2);

var $s3=$("#"+config.s3);

var v1=config.v1?config.v1:null;

var v2=config.v2?config.v2:null;

var v3=config.v3?config.v3:null;

$.each(threeSelectData,function(k,v){

appendOptionTo($s1,k,v.val,v1);

});

$s1.change(function(){

$s2.html("");

$s3.html("");

if(this.selectedIndex==-1) return;

var s1_curr_val = this.options[this.selectedIndex].value;

$.each(threeSelectData,function(k,v){

if(s1_curr_val==v.val){

if(v.items){

$.each(v.items,function(k,v){

appendOptionTo($s2,k,v.val,v2);

});

}

}

});

if($s2[0].options.length==0){appendOptionTo($s2,"...","",v2);}

$s2.change();

}).change();

$s2.change(function(){

$s3.html("");

var s1_curr_val = $s1[0].options[$s1[0].selectedIndex].value;

if(this.selectedIndex==-1) return;

var s2_curr_val = this.options[this.selectedIndex].value;

$.each(threeSelectData,function(k,v){

if(s1_curr_val==v.val){

if(v.items){

$.each(v.items,function(k,v){

if(s2_curr_val==v.val){

$.each(v.items,function(k,v){

appendOptionTo($s3,k,v,v3);

});

}

});

if($s3[0].options.length==0){appendOptionTo($s3,"...","",v3);}

}

}

});

}).change();

function appendOptionTo($o,k,v,d){

var $opt=$("").text(k).val(v);

if(v==d){$opt.attr("selected", "selected")}

$opt.appendTo($o);

}

}

select{width:80px;}

文字没有详细整理!懂点JS的就能看懂!

代码打包下载

您好!感谢您的提问。实现html二级联动下拉列表数字金额可以参考以下步骤: 1. 在HTML中定义两个下拉列表,一个用于选择数字,一个用于选择货币类型。 ```html <select id="number"> <option value="1000">1000</option> <option value="2000">2000</option> <option value="3000">3000</option> </select> <select id="currency"> <option value="USD">USD</option> <option value="CNY">CNY</option> <option value="EUR">EUR</option> </select> ``` 2. 使用JavaScript监听下拉列表的变化事件,根据选择的数字和货币类型计算出金额,并将金额显示在页面上。 ```javascript var number = document.getElementById("number"); var currency = document.getElementById("currency"); var result = document.getElementById("result"); number.addEventListener("change", function() { var amount = parseInt(number.value) * getExchangeRate(currency.value); result.innerHTML = amount.toFixed(2); }); currency.addEventListener("change", function() { var amount = parseInt(number.value) * getExchangeRate(currency.value); result.innerHTML = amount.toFixed(2); }); function getExchangeRate(currency) { // 根据货币类型从服务器获取汇率 // 这里只是简单地返回一个固定的值 if (currency === "USD") { return 1.0; } else if (currency === "CNY") { return 0.15; } else if (currency === "EUR") { return 1.2; } } ``` 3. 在页面上添加一个元素用于显示计算后的金额。 ```html <div id="result"></div> ``` 以上就是实现html二级联动下拉列表数字金额的基本步骤,您可以根据实际需求进行调整和扩展。希望能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值