RequiredFieldValidator + OnClientClick issue
JS script
function ConfirmMe()
{
return confirm("Do you want to proceed?");
}
ASPX
<asp:TextBox id="txtName" runat="server"/>
<asp:Button id="btnSubmit" OnClientClick="return ConfirmMe()" Text="Submit" runat="server"/>
Well, that is pretty straightforward. BUT, it goes weird when you have a validator control (eg. RequiredFieldValidator) that is used to validate the "txtName" textbox server control. For instance,
<asp:TextBox id="txtName" runat="server"/>
<asp:RequiredFieldValidator id="rq1" ControlToValidate="txtName" ErrorMessage="Name cannot be blank" Display="Dynamic" runat="server"/>
<asp:Button id="btnSubmit" OnClientClick="return ConfirmMe()" Text="Submit" runat="server"/>
Whenever you press the button with no textbox value, the client-side confirmation dialog will be invoked first before the validator message is able to show up. This isn't what we expected it to behave. I tried several ways to overcome this problem, including using CLIENT CALLBACK, disabling the CauseValidation, but it failed. Finally, I was able to find a solution by adding JUST ONE line in the JS script.
function ConfirmMe()
{
if(Page_ClientValidate())
return confirm('Do you want to proceed?');
Another discovery today !
function ConfirmMe()
{
return confirm("Do you want to proceed?");
}
ASPX
<asp:TextBox id="txtName" runat="server"/>
<asp:Button id="btnSubmit" OnClientClick="return ConfirmMe()" Text="Submit" runat="server"/>
Well, that is pretty straightforward. BUT, it goes weird when you have a validator control (eg. RequiredFieldValidator) that is used to validate the "txtName" textbox server control. For instance,
<asp:TextBox id="txtName" runat="server"/>
<asp:RequiredFieldValidator id="rq1" ControlToValidate="txtName" ErrorMessage="Name cannot be blank" Display="Dynamic" runat="server"/>
<asp:Button id="btnSubmit" OnClientClick="return ConfirmMe()" Text="Submit" runat="server"/>
Whenever you press the button with no textbox value, the client-side confirmation dialog will be invoked first before the validator message is able to show up. This isn't what we expected it to behave. I tried several ways to overcome this problem, including using CLIENT CALLBACK, disabling the CauseValidation, but it failed. Finally, I was able to find a solution by adding JUST ONE line in the JS script.
function ConfirmMe()
{
if(Page_ClientValidate())
return confirm('Do you want to proceed?');
Page_BlockSubmit=false; //当页面中有其他不需要验证的按钮或下拉框时一定要加上这句话,否则其他下拉框第一次提交时不会触发后台代码
return false;
}
return false;
}
Another discovery today !