目标:
当按下按钮时,弹出确认对话框,如果点否,不执行任何操作,
如果点是, 确认页面的有效性(Validators 是否验证成功)
如果通过,执行该按钮服务器端的事件处理
要求:
通过添加 [ 客户端脚本 ]实现==========================================================================================
当按钮的CausesVlidation == true, 并且页面上有Validator的时候,页面就会发生错误,不弹出对话框代码如下:protected System.Web.UI.WebControls.Button Button1;private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if( !Page.IsPostBack )
{
Button1.Attributes.Add( "onclick","javascript:return confirm('确定添加记录吗?')" );}
}
==========================================================================================
生成的页面代码如下:
<input type="submit" name="Button1" value="Button" onclick="javascript:return confirm('确定添加记录吗?')if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="Button1" />==========================================================================================当我将Button1.Attributes.Add( "onclick","javascript:return confirm('确定添加记录吗?')" );
改为Button1.Attributes.Add("onclick", "return confirm('确定添加记录吗?');");
的时候,当Validators未成功验证时,仍然执行了服务器断的操作,这不是期望的结果,请问如何解决
当按下按钮时,弹出确认对话框,如果点否,不执行任何操作,
如果点是, 确认页面的有效性(Validators 是否验证成功)
如果通过,执行该按钮服务器端的事件处理
要求:
通过添加 [ 客户端脚本 ]实现==========================================================================================
当按钮的CausesVlidation == true, 并且页面上有Validator的时候,页面就会发生错误,不弹出对话框代码如下:protected System.Web.UI.WebControls.Button Button1;private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if( !Page.IsPostBack )
{
Button1.Attributes.Add( "onclick","javascript:return confirm('确定添加记录吗?')" );}
}
==========================================================================================
生成的页面代码如下:
<input type="submit" name="Button1" value="Button" onclick="javascript:return confirm('确定添加记录吗?')if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); " language="javascript" id="Button1" />==========================================================================================当我将Button1.Attributes.Add( "onclick","javascript:return confirm('确定添加记录吗?')" );
改为Button1.Attributes.Add("onclick", "return confirm('确定添加记录吗?');");
的时候,当Validators未成功验证时,仍然执行了服务器断的操作,这不是期望的结果,请问如何解决
本来有个思路,不知道可不可以
RegisterOnSubmitStatement()
使用它试试!
注意 !!!!!!!!!!!!!!!!!!!1 最大的问题是,当onclick( at client )事件里面加入 "return xxx;" 之后,
即使页面上的Validator检测出页面内容不符合规格,并且在ValidationSummary中显示了n条Errormessage,该按钮的服务器断的OnClick事件还是执行了,这是最要命的。
我现在也在弄客户端效验 我们qq聊吧 也许有新的突破
我21594600 msn 也可以 你[email protected]看到后留言
拦截冒泡消息
继续探索Button的解决之道
只能是如果一直在服务器端,就全部用服务器端,反之也是.反正不能一会服务器,一会客户端,肯定不起作用的.
你在那儿胡说八道什么呢?一直都是在客户端验证的,什么时候说在服务器端了?
上面的就应该可以
你找下其他的问题看看
private void Button1_Click(object sender, System.EventArgs e)
{
if(Page.IsValid)
{
"提交";
}
else
{
"不能提交";
}
}
以一个例子来描述:
『aspx 页面代码』//===头两个textbox准备用自己的js判断不能同时为空===
<asp:textbox id="usrName" runat="server"></asp:textbox><span id="usrNameErrorTag" style="DISPLAY: none; COLOR: red">*</span>
<asp:textbox id="usrId" runat="server"></asp:textbox><span id="usrIdErrorTag" style="DISPLAY: none; COLOR: red">*</span><BR>//===下一个dropdownlist用验证控件判断不为空===
<asp:dropdownlist id="DropDownList1" runat="server">
<asp:ListItem Value="">-----</asp:ListItem>
<asp:ListItem Value="a">a</asp:ListItem>
<asp:ListItem Value="b">b</asp:ListItem>
<asp:ListItem Value="c">c</asp:ListItem>
<asp:ListItem Value="d">d</asp:ListItem>
</asp:dropdownlist>
//===用到的验证控件===
<asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1" ErrorMessage="*">test</asp:requiredfieldvalidator><BR>//===按钮===
<asp:button id="Button1" runat="server" Text="Button" CausesValidation="False"></asp:button></FONT>我建议两种方法:第一种利用验证控件除了能客户端js验证,还能再服务端验证
1)Button1的CausesValidation设为false,不让.net自动生成验证的js(就是源代码中的"if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();")2)为Button1添加自己的javascript:
『aspx 页面js代码』
function UsrNameOrUsrIdValidate()
{
if(document.all["usrName"].value =="" && document.all["usrId"].value=="")
{
document.all["usrNameErrorTag"].style.display = "inline";
document.all["usrIdErrorTag"].style.display = "inline";
return false;
}
}
『cs中的代码』
private void Page_Load(object sender, System.EventArgs e)
{
Button1.Attributes.Add("onclick","return UsrNameOrUsrIdValidate();");
}这样页面就验证自定义的js"UsrNameOrUsrIdValidate";3) 在服务期端判断.net验证控件的部分
『cs中的代码』
private void Button1_Click(object sender, System.EventArgs e)
{
Page.Validate();
if(Page.IsValid)
{
Response.Write("a");
}
}其中的Page.Validate()就是在服务器端验证第二种都在客户端用js验证,推荐!!‘只要在第一种的第2)步中,js改为『aspx 页面js代码』
function UsrNameOrUsrIdValidate()
{
if(document.all["usrName"].value =="" && document.all["usrId"].value=="")
{
document.all["usrNameErrorTag"].style.display = "inline";
document.all["usrIdErrorTag"].style.display = "inline";
return false;
}
else
{
document.all["usrNameErrorTag"].style.display = "none";
document.all["usrIdErrorTag"].style.display = "none";
if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();
}
}原理很简单就是 先判断自定义的js,然后把.net自动生成的js"if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate();"手工写在后面就可以
当然前提是Button1的CausesValidation设为false.以上就是我想到的办法,当然你可以把全部验证用自己的js写,在这我只讨论关于自定义javascript和验证控件javascript在同一个button上冲突的解决
return confirm(".....");
因为你先判断confirm 当用户点击确认时 你return true 了相当于已经提交而每进行客户端的验证
有个简单的方法,
button.Attribute.Add("javascript: if(!confirm("ary ready") return false; )")
Add("onclick" , ("javascript: if(!confirm(\"ary ready\")) return false; )"))