Js 子窗口更改父窗口控件值
开启子窗口:
window.open('url?field=' + strField, '_media', 'width=320,height=190,resizable=no,left=150,top=180');
微软技术文档解释:https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.htmlwindow.open?view=net-5.0
关闭子窗口
给子窗口控件一个 Href 属性, 用来关闭页面与对父窗口控件赋值
赋值代码1:
//被更改的控件设置只读属性后,value值会设置失败,text会设置成功
window.opener.document.控件ID.value = "";
赋值代码2:
window.opener.document.getElementById('控件id').value = '';
前台代码
<form id="Form1" method="post" runat="server"*>
// 赋值1: vs 2008以下版本适用,以上版本不适用
<input type="text" id="TXT_sjk" runat="server" onclick="calendarPicker('From1.TXT_sjk')" />
// 赋值2: vs 2008以下版本不适用,以上版本适用
<INPUT type="text" id="TXT_sjk" runat="server" onclick="calendarPicker(this.id)" />
</form>
<script>
function calendarPicker(strField) {
window.open('../Common/Calendar.aspx?field=' + strField, 'calendarPopup', 'width=320,height=190,resizable=no,left=150,top=180');
}
</script>
.net 写法,后台设置js事件,给前台日期控件每个日期加入点击事件:在控件的生成事件DayRender中加入:
e.Cell.Controls.Clear();
// Add the custom link
System.Web.UI.HtmlControls.HtmlGenericControl Link = new System.Web.UI.HtmlControls.HtmlGenericControl();//生成一个控件
Link.TagName = "a"; // 设置控件类型:a标签
Link.InnerText = e.Day.DayNumberText;
// 赋值1: 给控件设置href 事件执行的代码 ,点击对父窗口控件时赋值 vs2008以下的版本适用*
Link.Attributes.Add("href", String.Format("JavaScript:window.opener.document.{0}.value = \'{1:d}\'; window.close();"
, Request.QueryString["field"], e.Day.Date.ToString("yyyy/MM/dd")));
// 赋值2: 给控件设置href 事件执行的代码
Link.Attributes.Add("href", String.Format("JavaScript:window.opener.document.getElementById('{0}').value = '{1:d}'; window.close();"
,Request.QueryString["field"], e.Day.Date.ToString("yyyy/MM/dd")));
// By default, this will highlight today's date.
if(e.Day.IsSelected)
{
Link.Attributes.Add("style", this.Calendar1.SelectedDayStyle.ToString());
}
// Now add our custom link to the page
e.Cell.Controls.Add(Link);// 给单元格添加上控件