页面点击编辑时,要在弹出的iframe中显示点击取到的值:
以下拉框为例:
ajax动态加载append内容:
$(function(){
//显示父类型
$.ajax({
url: 'types/getAllBigType.do',
type:'post',
async: false,//设置为同步
dataType:'json',
success:function (r) {
var b = r.biglist;
for (var i = 0; i < b.length; i++) {
$("select[name=big_id]").append("<option value="+b[i].big_type+">"+b[i].big_type+"</option>");
}
},
'error':function () {
layer.msg('系统错误',{icon:1,time:1000});
}
});
});
完成加载之后是这个样子的:
但是当我们实现编辑修改时,获取到当前点击的行的内容,赋值给修改页面中的时候,下拉框无法自动选中所属的类型,主要原因是ajax使用了异步,只要改为同步 async: false,//设置为同步,就可以选中属于哪种类型了。
//子类型-编辑
function updateSmall(event){
//获取并赋值
var s_id = $(event).parents().children("td").eq(1).html();//取到id
var s_type = $(event).parents().children("td").eq(2).html();//取到子类型名称
var b_type = $(event).parents().children("td").eq(3).html();//取到父类型id
//弹出一个窗口
layer.open({
type: 2,
title: '编辑子类型',
area: ['800px', '500px'],
content: ["Backstage/type_add.jsp",'no'],
success:function(layero, index){
//获取弹窗页面的标签对象
var small_id = $("#small_id", layero.find("iframe")[0].contentWindow.document);
var small_type = $("#small_type", layero.find("iframe")[0].contentWindow.document);
var big_id = $("#big_id", layero.find("iframe")[0].contentWindow.document);
var save = $("#saveSubmit", layero.find("iframe")[0].contentWindow.document);
//给弹出的窗口中的内容赋值
small_id.attr("value", s_id);
small_type.attr("value", s_type);
//由于ajax是异步的,下拉框不会获取到动态append添加的option和内容,解决方法是把ajax设置为同步的async: false
//所以下面这段代码才管用,不然取到的只有页面select原始的option的值
big_id.find('option').each(function(){
//遍历下拉框的子标签
if($(this).val() == b_type){
//如果下拉框的子标签的值与从上个页面获取到的值相同,则选中
$(this).attr('selected','selected');
}else{
$(this).attr('selected',false);
}
});
return true;
});
},
end:function(layero, index){
//点击关闭按钮就刷新页面
layer.close(index);
}
});
}
显示为: