异步ajax动态实现级联,JQuery异步加载无限下拉框级联功能实现示例

/*

JQuery异步加载无限极下拉框级联功能

zjy

*/

(function ($) {

$.ajaxSetup({ async: false });

var url = "";

var parameter = "";

$.fn.extend({

Load: function (urlPath) {

url = urlPath.url;

parameter = urlPath.parameter;

$("#ddl1").append("请选择");

$.getJSON(url, parameter, function (data) {

$.each(data.rows, function (i, row) {

$("#ddl1").append($("").val(row.id).html(row.text));

});

$("#ddl1").change(function () { $(this).Select($(this).val(), this); });

});

$(this).Selected(parameter.parentId, $("#ddl1"));

},

Select: function (parentId, obj) {

//debugger;

if (parentId == "0") {

return;

}

parameter.parentId = parentId;

$.getJSON(url, parameter, function (data) {

$(obj).nextAll(".ddl").remove();

if (data != null) {

$("", {

"class": "ddl",

change: function () {

$(this).Select($(this).val(), this);

}

}).appendTo($("#cascade"));

$($(".ddl")[$(".ddl").length - 1]).append("请选择");

$.each(data.rows, function (i, row) {

$($(".ddl")[$(".ddl").length - 1]).append($("").val(row.id).html(row.text));

});

}

});

$(this).Selected(parentId, $(obj).nextAll(".ddl"));

},

Selected: function (parentId, obj) {

$(this).GetValue();

//debugger;

var selected = "0," + $("#loadselect").val();

$.each(selected.split(","), function (i, row) {

if (row == parentId) {

//debugger;

$(obj).val(selected.split(",")[i + 1]);

$(obj).change();

}

});

},

GetValue: function () {

var ddlValue;

var ddlCount = $(".ddl").length;

for (var i = ddlCount - 1; i >= 0; i--) {

if (i != 0) {

if ($($(".ddl")[i]).val() != 0) {

ddlValue = $($(".ddl")[i]).val();

break;

}

} else {

if ($($(".ddl")[i]).val() == 0) {

ddlValue = 0;

break;

} else {

ddlValue = $($(".ddl")[i]).val();

break;

}

}

}

$("#selectvalue").val(ddlValue);

},

});

})(jQuery);

 
 
调用方法
 
 
 
 
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vant级选择器(Cascader)组件提供了异步数据的功能,可以用于无限层级的地区选择。以下是一个示例代码: ``` <template> <van-cascader :options="options" :load-data="loadData" v-model="value" :placeholder="'请选择地区'" :columns="3" /> </template> <script> export default { data() { return { value: [], options: [ { text: '省份', value: 'province', children: [], }, { text: '城市', value: 'city', children: [], }, { text: '区县', value: 'district', children: [], }, ], }; }, methods: { async loadData(item) { const data = await this.getAreaData(item.value); item.children = data; }, async getAreaData(value) { // 根据 value 获取对应的数据 // 这里可以通过异步请求获取数据 // 返回一个 Promise }, }, }; </script> ``` 以上代码中,`options` 数组是级选择器的选项列表,其中每个选项都有 `text`、`value` 和 `children` 三个属性。`text` 和 `value` 表示选项的显示文本和值,`children` 是一个空数组,用于存放子选项。 `loadData` 方法是级选择器异步数据的回调函数,它接收一个 `item` 参数,表示当前选中的选项。在该方法中,可以根据当前选项的值通过异步请求获取子选项数据,并将数据赋值给 `item.children` 属性。这样,在用户选择当前选项时,就会自动触发子选项的操作。 在实际使用中,需要根据具体的业务需求调整代码,例如修改选项显示文本、修改异步请求的参数等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值