首页 新闻 会员 周边 捐助

jquery ajax 下拉框联动

0
悬赏园豆:15 [已解决问题] 解决于 2010-12-24 16:40

我用ajax做2个ddl的联动,现在遇到一个问题,就是修改的时候,第2个ddl无法保持选中值,设置selectvalue不起作用。

问题补充: //onload $(function() { var $Company = $("#ddlCompany"); LoadDepartment($Company.val()); //第一次加载的时候默认获取第一个company的department //为company的选择绑定事件 $Company.bind("change keyup", function() { if ($(this).val() != "") { var comid = $Company.attr("value"); LoadDepartment(comid); } else { $("#ddlDepartment").fadeOut("slow"); } }); }) //根据company获取department function LoadDepartment(id) { $.getJSON("../GetDepartment.ashx?companyid=" + id, function(data) { $("#ddlDepartment").html(""); for (var i = 0; i < data.length; i++) { $("#ddlDepartment").append($("<option></option>").val(data[i].DepartmentID).html(data[i].DepartmentName)); }; }); }
szny的主页 szny | 初学一级 | 园豆:60
提问于:2010-12-24 14:40
< >
分享
最佳答案
0
function ChangeWH() {
$(
'#hdfWHID').val($('#ddlAddrs').val());
$(
'#hdfWHName').val($('#ddlAddrs').text())
}
function Change() {
var val
= $('#ddlInOrg').val();
$.
get("FlittingHandler.ashx?action=WH&DeptID=" + val, function(jsonstr) {
var json
= eval(jsonstr);
$(
'#ddlAddrs').html('');
$.each(json, function(i) {
if (i == 0) {
$(
'#ddlAddrs').append("<option value='" + json[i].WHID + "' selected='true'>"
+ json[i].WHName + "</option>");
}
else {
$(
'#ddlAddrs').append("<option value='" + json[i].WHID + "'>"
+ json[i].WHName + "</option>");

}
});
ChangeWH();
});
}

确实存在这个问题,而且存在后台无法取道服务端控件选中值的问题。用隐藏字段可以解决这种问题。〔在联动后触发一次第二个ddl的赋值函数〕

收获园豆:13
邢少 | 专家六级 |园豆:10926 | 2010-12-24 15:12
新增的时候,我取值没用hiddenfiled,后台直接用request.form("ID")就可以了。看了你的代码,我还没想到怎么改。你看看我贴的代码。
szny | 园豆:60 (初学一级) | 2010-12-24 15:23
if (i == 0) { $('#ddlAddrs').append("<option value='" + json[i].WHID + "' selected='true'>" + json[i].WHName + "</option>"); } 这个i 是什么意思。我好想就少了这么个东西。
szny | 园豆:60 (初学一级) | 2010-12-24 15:26
$.each(json, function(i) { 这一句。i是each函数的一个参数、迭代集合的索引。类似与for〔〕中的i变量
邢少 | 园豆:10926 (专家六级) | 2010-12-24 16:18
如果不用隐藏字段的话、用服务端控件在新增状态和编辑状态下会出现控制困难。你新增可以request[]、但是你编辑总不能request[]=''吧。 总之是不用服务端控件行。都用回传也行。但是ajax一半一半就麻烦点。
邢少 | 园豆:10926 (专家六级) | 2010-12-24 16:21
编辑的时候控制困难我已经体会到了。我用了一个变通的方法解决了。 Much Appreciated!
szny | 园豆:60 (初学一级) | 2010-12-24 16:39
感谢大家的回答。
szny | 园豆:60 (初学一级) | 2010-12-24 16:41
其他回答(1)
0

jquery ajax方法是异步执行的,你是不是异步没执行完就设置第二个ddl了?你可以在ajax方法的success或者complete里面设置。

收获园豆:2
webaspx | 园豆:1973 (小虾三级) | 2010-12-24 14:46
你理解错了。我的意思是我已经实现了联动,添加记录是OK的。但是在修改记录的时候,界面show出来,我要给第2个ddl绑定之前选择的值。这个我不知道怎么做。
支持(0) 反对(0) szny | 园豆:60 (初学一级) | 2010-12-24 14:49
修改记录的时候?不明白什么时候?说下你具体要干什么?
支持(0) 反对(0) webaspx | 园豆:1973 (小虾三级) | 2010-12-24 15:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册