
1、其实难点也就是多个Tab页,每个Tab页都有单独的Form表单,通过Modal的一个按钮如何控制,如何去校验多个表单。可以通过Ref实现此 *** 作
首先创建空的Ref数组
渲染界面,循环时每次创建一个Ref,和表单。并且这个表单用当前创建的Ref作为唯一标识。
2、表单子组件,将Form对象传递出去
3、create的时候,也就是点击Modald窗确定的时候,调用子组件的方法获取每个ref的Form对象,通过Promise.all方法判断是否都通过了校验
不能使用window parent
Window parent是用来在frame中进行 *** 作的 在对话框中不能用来 *** 作父窗口对象
正确的做法
调用modaldialog时通过传参数的方式 *** 作
例
需求
父窗口页面为l 子窗口页面为l l中有文本框id为test 在打开的对话框中点击按钮 将l的文本框值改为 子窗口值
实现
打开对话框时把test 作为参数传给子窗口 在子窗口中获取参数 将参数对象(即l中传过来的text对象)的value属性值设置为 子窗口值
注意 这里只能传id 不能传name
l代码如下
<>
<head>
<meta equiv= Content Type content= text/charset=gb >
<title>l</title>
</head>
<body>
<input type=text id=test value= >
<input type=button value= OK onclick= window showModalDialog( l test ) >
</body>
</>
l代码如下
<>
<head>
<meta equiv= Content Type content= text/charset=gb >
<title>l</title>
<script language=javascript>
function func (){
//获取父窗口传过来的参数
var ptextid = window dialogArguments
if(ptextid != undefined){
//将父窗口传过来的对象的值改为 子窗口值
ptextid value = 子窗口值
//关闭子窗口
window close()
}
}
</script>
</head>
<body>
<input type=button value= OK onclick=func ()>
</body>
</>
如果需要 *** 作的父窗口对象比较多 也可以将window或window document作为参数传给子窗口
例
需求
l中添加id为 aform 的的form form中有id为test 的文本框 在l中 除了进行上面的 *** 作之外 还要将test 的值改为 子窗口值 并将form提交到l
实现
将l中打开对话框的函数改为如下方式:
window showModalDialog( l window document)
将l中func ()改为如下:
function func (){
var pdoc = window dialogArguments
if(pdoc!=undefined){
pdoc all test value= 子窗口值
pdoc all test value= 子窗口值
pdoc all aform action= l
pdoc all aform submit()
}
实现
因为在子窗口中对父窗口进行的 *** 作比较多 也可以采用execScript的方式实现
将l中打开对话框的函数改为如下方式:
window showModalDialog( l window)
添加javascript函数如下
function func(){
test value= 子窗口值
document all test value= 子窗口值
aform action= l
aform submit()
将l中func ()改为如下:
function func (){
var pwin = window dialogArguments
if(pwin!=undefined){
var codeStr = func()
pwin execScript(codeStr javascript )
window close()
}
lishixinzhi/Article/program/Java/hx/201311/27093
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)