(高分求教)如何在客户端检查TextBox的text改变事件,并且调用服务器端的方法来处理。 现在做一个B/S架构的人事系统,原来日期变化使用页面的Calendar事件处理,现在客户要求使用弹出窗口选择日期,我现在想在客户端检查到日期的改变,并调用服务器端的方法去处理,应该如何做?请各位高手现身指教。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 前段用Jsp写个日期输入方法不就可以了? 不是这个意思,应为日期变化时还要做数据库操作和页面其它控件的刷新。比如请假,用户输入开始日期,结束日期,服务器端查询数据库检查这段时间内那些是公休假日,结束日期-开始日期-公休假日数=请假天数,并把请假天数显示在页面上。原来我们是在Calendar控件里处理这些东西,现在客户要求把日历做在弹出窗口页面里,这样就难以触发服务器端的方法来做上述的这些处理了。 可以在窗体上放一个服务器Button 然后Width = 0px,并注册click服务器事件在接受日期值的控件上,比如是textbox 或者其他什么 注册onpropertychange客户段事件然后在这个客户段事件中,document.getElementById(服务器BUTTON的ID).click();这样就可以调用服务器BUTTON的事件了。需要的方法写到BUTTON_click就行了 用脚本写textbox的onchange事件啊:<input type="text" onchange="post()" onlick="selectDate()"><script>function selectDate(){ //弹出窗口选择}function post(){ //在这里还可以做一些客户端的逻辑检查 document.forms[0].submit();}</script> to:h(t0h)你说的这个方法不知道行不行,我试试。这个onpropertychange在用户直接输入日期时应该会有问题,是不是要在加个判断,如果用户输入的是一个日期了,才调用服务器端的事件。 to:qpl007(蓝色闪电)非手动输入,不会触发onchange吧 不好意思,用onpropertychange<input type="text" onpropertychange="post()" onlick="selectDate()"><script>function selectDate(){ //弹出窗口选择}function post(){ //在这里还可以做一些客户端的逻辑检查 document.forms[0].submit();}</script> 感谢大家的回复,现在把修正后的相关代码贴出来大家共享//日期弹出窗口代码private void Calendar1_SelectionChanged(object sender, EventArgs e){ System.Text.StringBuilder script = new StringBuilder(); script.Append("<script language=javascript> \n"); string fld = Request.QueryString["fld"].Trim(); if(fld!="") { script.Append("opener."+fld+ ".value='" +Calendar1.SelectedDate.ToShortDateString()+"';\n"); } script.Append("opener." + fld + ".focus();\n"); script.Append("opener." + fld + ".blur();\n"); script.Append("close();\n"); script.Append("</script>\n"); Response.Write(script.ToString());}//日期检查function mycheckfield(str){ str = KillSpace(str); if(str == "") { return true; } var pattern = /^((\d{4})|(\d{2}))[-\.\/](\d{1,2})[-\.\/](\d{1,2})$/g; if(!pattern.test(str)) { return false; } var ch=str.substring(4,5);var arrDate = str.split(ch);if(parseInt(arrDate[0],10) < 100){ arrDate[0] = 2000 + parseInt(arrDate[0],10) + ""; } var date = new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]); if(date.getFullYear() == arrDate[0] && date.getMonth() == (parseInt(arrDate[1],10) -1)+"" && date.getDate() == arrDate[2]) { return true; } else { return false; } }//给页面控件添加onblur客户端事件this.txtEndDate.Attributes.Add("onblur","return mycheckfield(this.value) && "+GetPostBackEventReference(btnDate,"")); 你们原来是怎么学习winform的?????大家说说! 怎么在特定位置插入xml的元素 picturebox的image属性问题。 c# 单个程序怎么运行, 一个project怎么 编译 运行? 有高手知道怎么在winform里发email吗?C#的 求<<C#线程参考手册 >>电子版下载 一个读INI文件的问题? 委托的回调方法的参数怎么解释? 請教大家兩個問題,我每次最多吸能給100分, 沒辦法, 開三貼! VS2010强数据集 想写各类似于QQ似的东西,有兴趣的进来研究研究! 求一种模式或解决方法:
比如请假,用户输入开始日期,结束日期,服务器端查询数据库检查这段时间内那些是公休假日,结束日期-开始日期-公休假日数=请假天数,并把请假天数显示在页面上。
原来我们是在Calendar控件里处理这些东西,现在客户要求把日历做在弹出窗口页面里,这样就难以触发服务器端的方法来做上述的这些处理了。
function selectDate()
{
//弹出窗口选择
}function post()
{
//在这里还可以做一些客户端的逻辑检查 document.forms[0].submit();
}
</script>
你说的这个方法不知道行不行,我试试。这个onpropertychange在用户直接输入日期时应该会有问题,是不是要在加个判断,如果用户输入的是一个日期了,才调用服务器端的事件。
非手动输入,不会触发onchange吧
function selectDate()
{
//弹出窗口选择
}function post()
{
//在这里还可以做一些客户端的逻辑检查 document.forms[0].submit();
}
</script>
//日期弹出窗口代码
private void Calendar1_SelectionChanged(object sender, EventArgs e)
{
System.Text.StringBuilder script = new StringBuilder();
script.Append("<script language=javascript> \n");
string fld = Request.QueryString["fld"].Trim();
if(fld!="")
{
script.Append("opener."+fld+ ".value='" +Calendar1.SelectedDate.ToShortDateString()+"';\n");
}
script.Append("opener." + fld + ".focus();\n");
script.Append("opener." + fld + ".blur();\n");
script.Append("close();\n");
script.Append("</script>\n");
Response.Write(script.ToString());
}
//日期检查
function mycheckfield(str)
{
str = KillSpace(str);
if(str == "")
{ return true; }
var pattern = /^((\d{4})|(\d{2}))[-\.\/](\d{1,2})[-\.\/](\d{1,2})$/g; if(!pattern.test(str))
{ return false; }
var ch=str.substring(4,5);
var arrDate = str.split(ch);
if(parseInt(arrDate[0],10) < 100)
{ arrDate[0] = 2000 + parseInt(arrDate[0],10) + ""; }
var date = new Date(arrDate[0],(parseInt(arrDate[1],10) -1)+"",arrDate[2]); if(date.getFullYear() == arrDate[0] && date.getMonth() == (parseInt(arrDate[1],10) -1)+"" && date.getDate() == arrDate[2])
{ return true; }
else
{ return false; }
}//给页面控件添加onblur客户端事件
this.txtEndDate.Attributes.Add("onblur","return mycheckfield(this.value) && "+GetPostBackEventReference(btnDate,""));