头都大了,layer.open如何获取iframe页面的元素的值

提问 未结
4 1728
斗地主
斗地主 2017-2-17
悬赏:5飞吻
需求是这样的,主页面index有个链接(或者说是按钮),点击这个按钮的时候弹出窗口,窗口的页面是iframe.jsp,iframe.jsp里面input,那么想在点击layer.open的按钮的时候获取iframe.jsp页面中input的值。
如下:index页面
<head>
<script src="${pageContext.request.contextPath}/js/jquery-3.1.1.min.js" type="text/javascript"></script>
</head>
<body>
<a id="open">layertest</a>
<script src="${pageContext.request.contextPath}/js/layer/layer.js" type="text/javascript"></script>
<script src="${pageContext.request.contextPath}/js/test.js" type="text/javascript"></script>
</body>
</html>

点击layertest调用的js:
$("#open").on("click", function() {
layer.open({
type : 2,
area : [ '700px', '530px' ],
fixed : false, // 不固定
maxmin : true,
content : 'iframe.jsp',
btn : [ '继续弹出', '全部关闭' ] // 只是为了演示
,
yes : function(layero, index) {
var data = $("#myname").val();
layer.msg("哈哈哈:" + data, {
time : 5000
});
},
btn2 : function() {
layer.closeAll();
}
});
});

iframe页面:
<input id="myname" name="myname" type="text"/>

效果:


难道不能这样直接获取么?
这么简单的都搞了半天,希望大神能够指点指点,谢谢。[泪]
回帖
  • 斗地主
    2017-2-17
    自己顶一一下[失望]
    0 回复
  • 斗地主
    2017-2-17
    之前使用了:

    var body = layer.getChildFrame('body', index);
    var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
    console.log(body.html()) //得到iframe页的body内容
    body.find('input').val('Hi,我是从父页来的')
    }
    });
    还是不行,搞到快受不了,后面才发现这里两个参数的顺序问题:

    文档是:(layero, index) 换了下这两个顺序就好了,好坑啊
    0 回复
  • 感觉思路不对的吧。
    你这个只要iframe.jsp做弹出就行了啊,为什么是要父页面去获取呢? 如果是为了获取这个值,直接index点击这个按钮的时候 直接ajax获取input的值就行了,是不是你把这个搞复杂化了
    你直接iframe.jsp
    parent.layer.msg($("#myname").val());就能达到你的效果吧
    0 回复
  • 斗地主
    2017-2-17
    @杭州隔壁老王 弹出的iframe.jsp界面有input给用户填写信息,然后获取iframe.jsp所填写的信息通过ajax提交,iframe.jsp就没有按钮,使用layer.open的按钮来操作提交
    0 回复
本帖已设置禁止回复
本周热议
没有相关数据
layui

微信扫码关注 layui 公众号