showModalDialog子窗口向母窗口写入数据时服务器控件在后台得不到该数据,建议在子窗口直接调用母窗口的方法,由该方法写数据.另外,showModalDialog子窗口调母窗口:
window.showModalDialog('Pipe_Select.aspx',self,'dialogHeight:600px;dialogWidth:800px;left='+(window.screen.width-350)/2+';top=40;status:no;scroll:no;help:no;'); //这里写错几个似乎没事 ,母窗口
self可传母窗口的控件ID过子窗口.
var kk=window.dialogArguments;
for(var j=0;j<kk.form1.elements.length;j++)
{
if(kk.form1.elements[j].id==PipeId)
{
flag=0;
break;
}
kk.form1.txt_PipeSelect.value += PipeName+";";
}
另外,父窗口可以取到request到子窗口的控件值,但是会使父窗口更新,这样父窗口动态创建的元素消失.
function insertRow(PipeId,PipeName,PipeLoad,PipeCity){
var flag=1;
var kk=window.dialogArguments;
kk.showPipe.style.display="";
// alert(PipeId);
//alert(kk.form1.elements.length);
for(var j=0;j<kk.form1.elements.length;j++)
{
if(kk.form1.elements[j].id==PipeId)
{
flag=0;
// alert("您已经添加该管井");
// window.close();
break;
}
}
if(flag==1)
{
var tr = kk.predecessorTable.insertRow();
var td = tr.insertCell();
td.innerHTML = "<td id='"+PipeId+"' align='center' class='tdcss'>"+PipeName+"<input type='hidden' id='"+PipeId+"' name='PipeId' value='"+PipeId+"'><input type='hidden' name='hidfUserName' value='"+PipeId+"'></td>";
var td = tr.insertCell();
td.innerHTML = "<td align='center' class='tdcss'>"+PipeLoad+"<input type='hidden' name='hidFFullName' value='"+PipeLoad+"'></td>";
var td = tr.insertCell();
td.innerHTML = "<td align='center' class='tdcss'>"+PipeCity+"<input type='hidden' name='hidFFullName' value='"+PipeLoad+"'></td>";
var td = tr.insertCell();
td.innerHTML = "<td valign='middle' align='center' class='tdcss'><IMG height='16' src='../Images/del.gif' width='16' style='CURSOR: hand' οnclick='deleteCurrentRow();'></a></td>";
kk.form1.txt_PipeSelect.value += PipeName+";";
}
//alert('所选项已经加入到列表中');
//window.close();
//flag=1;
}
父窗口可以用request("PipeId")取得子窗口所有的input的ID为 id='"+PipeId+"'里面的value值
父窗口判断第一个input中输入的是数字或小数:
var tbobj = document.getElementById("predecessorTable") ;
var MatLen=tbobj.getElementsByTagName('tr').length-1;//减去第一行显示的tr
for(i=1;i<=MatLen;i++){
// var MatNums=tbobj.childNodes[i].childNodes[3].childNodes[2].innerText;//取<td>取这里的值,取不到控件值</td>
// var MatNums=tbobj.childNodes[i].childNodes[3].childNodes[2].innerHTML;//取<td>取这里生成的所有HTML代码</td>
var MatNums=tbobj.childNodes[0].childNodes[i].childNodes[2].firstChild.value;//取得TD中第一个控件元素INPUT的值
//判断输入的是数字或小数,只可输入一个.
if(/^\d+(\.?\d+)?$/g.test(MatNums)!=true){
alert("输入的耗材数量有误,请重新输入!");
return false;
}
}
return true;
转载于:https://www.cnblogs.com/kuaile/archive/2009/08/28/1555926.html