demo.laravel-admin.org
demo.laravel-admin.org copied to clipboard
三级联动select时通过javascript修改select值时不能正确显示
通过调用apiModalEditData(apiUrl)正确拿到数据的json,然后在将对应值填入表单时,只有第一层省份信息是正确的.调试过程发现联动的$.get()出现时延,导致下层数据出来后,被上层数据覆盖.而且修改值的顺序也是省、市、区.下面是用来将json数据填写表单时用到的script
function domEquipment(key,value)
{
var dom = $('[name=' + key + ']');
console.log('[name=' + key + ']='+value);
if (dom.is('select'))
{
dom.val(value).trigger('change');
$("option", dom).each(function()
{
if (this.value == value)
{
this.selected = true;
}
else
{
this.selected = false;
}
});
dom.val(value).trigger('change');
console.log(dom);
}
else
{
switch (dom.attr("type"))
{
case "text":
case "hidden":
case "textarea":
dom.val(value).trigger('change');
break;
case "radio":
case "checkbox":
dom.val(value).trigger('change');
dom.each(function()
{
if ($(this).attr('value') == value)
{
$(this).attr("checked", value);
}
});
break;
}
}
};
function populateForm(frm, data)
{
$.each(JSON.parse(data), function(key, value)
{
domEquipment(key,value);
});
};
function apiModalEditData(apiUrl)
{
$.get(apiUrl, function (data)
{
data=data.replace('[','').replace(']','');
populateForm('.modal_form',data);
});
};
已自己解决了,通过触发'change.select2'实现,同时将相应的options找出来,重新装载