请问诸位大佬父页面给弹出层select默认值的问题

提问 未结 12 758
spsyche
spsyche 2018-7-25
悬赏:20飞吻
版本:layui 浏览器:
我想初始化弹出层里的下拉框,所以我在弹出层页面写了一个初始化方法。现在我想回显数据,给弹出层的select一个从后台取得值。所以我在父页面的success里写了一个赋值的方法,问题就来了。这个弹出层的success方法总是在弹出层的layer.ready()之前执行,导致弹出层的select没法显示后台传过来的值。我也试过把初始化也写到父页面里可以执行,但是效率不行,请问诸位大佬有办法让弹出层的select初始化以后,再把后台传的值赋给这个select吗?感谢
回帖
  • 贤心
    贤心 (管理员)
    2018-7-25
    通过以下方式即可向父页面的 select 赋值
     parent.$('#select的ID').val('123')
    0 回复
  • spsyche
    2018-7-26
    @贤心 大佬,可能我没说明白。我想在父页面给弹出层的select赋值,父页面里success方法里的赋值方法总是在弹出层页面初始化select之前执行,导致没法给子页面的select赋值
    0 回复
  • @spsyche 赋值完毕后,form.render()试试呢?
    0 回复
  • spsyche
    2018-7-26
    @藏锋入鞘丨 不行,你看弹出层的select都没初始化,就是没有option,就给它赋值肯定没法赋值。现在问题就是layer.open的success 总是在弹出层的layer.ready之前执行
    0 回复
  • 没法赋值是神魔意思?渲染option之后立马调用form.render();不就能确保select可以渲染上了么?
    0 回复
  • spsyche
    2018-7-26
    @藏锋入鞘丨 渲染option是在赋值之前就执行了,就是这个问题,导致select获取不到值。因为我的赋值方法是在父页面lay.open的success里写的,这个success里的方法执行总是在弹出层的layer.ready 之前就执行,所以就是弹出层的select还没渲染,就已经赋值了,所以select显示不了我给他的赋值。
    0 回复
  • 哦哦,,我貌似明白你的意思了,layer打开的是一个iframe么,所以layer.open()的success方法在子页面加载完毕前就调用了,所以才没法通过主页面传值给子页面的吧。
    那么可以在子页面的ready()里边,取父页面变量就行了。
    引用博客:
    https://www.cnblogs.com/huangshuqiang/p/5734358.html

    window.parent.aa();//调取aa函数
    window.parent.bb;//调取bb变量

    // 例如:想在子页面中得到id为aaa的文本框的值

    window.parent.$("#aaa").val();//这种写法的前提是引用了jquery

    window.parent.getElementById("aaa").value; //js的写法
    0 回复
  • spsyche
    2018-7-26
    @藏锋入鞘丨 好 我试试 感谢
    0 回复
  • StilesYu
    2018-9-11
    @spsyche 兄弟,这个问题解决了吗
    0 回复
  • spsyche
    2018-9-12
    @StilesYu 解决了
    0 回复