我在客户端设置customvalidator时遇到问题。 基于特定的隐藏字段值,按钮的onClientClick事件应该触发一个函数,该函数将CustomValidator的isValid属性设置为false。
以下是一些代码: 代码背后:
protected void Page_Load(object sender, EventArgs e)
{
if (hiddenfieldValue == true)
{
btnSend.OnClick = "someJavascriptFunction()";
}
}
ASPX文件:
function someJavascriptFunction()
{
if (hiddenfieldValue == true)
// Show Validation and dont do postback
vldValdiator.isValid = false;
return false; //Dont do Postback
else
return true; Do Postback
}
<asp:CustomValidator ID="vldValidator" runat="server" Text = "ABC"/>
我无法在客户端基于隐藏字段值设置isValid属性。 请帮忙 。提前谢谢。
答案 0 :(得分:3)
方法1
您可以尝试在onClientClick事件按钮中将Page_IsValid
属性设置为false。就asp.net验证器而言,这会强制页面进入非验证状态。
基本示例
function ButtonOnClickClient()
{
if ($('#hiddenFieldID').val() == 'someValue')
{
Page_IsValid = false;
}
}
老实说 - 我不相信Page_IsValid属性不会被重置。你需要尝试
方法2
您可以使customvalidator客户端验证检查隐藏字段,并在此基础上使验证器通过或验证失败。按钮onclient click事件然后可以调用Page_ClientValidate()
函数,这将强制页面上的验证。然后,这将设置正确的验证属性。
基本示例2
function CustomValidatorClientValidate(source, arguments)
{
if ($('#hiddenFieldID').val() == 'someValue'){
arguments.IsValid = true;
} else {
arguments.IsValid = false;
}
}
function ButtonOnClientClick()
{
Page_ClientValidate();
}
这使用JQuery - 因为我发现以这种方式编写示例更容易。绝不是必须使用它。另外我假设存在asp.net验证器API。如果你已经包含了那些控件,但是你可以通过添加对函数名称的检查
来收紧ALSO
如果您使用的验证组可能会成为
Page_ClientValidate(validationGroupName);
方法3
你可以尝试一下但是设置customvalidator的isvalid属性。这应该可以让您更直接地控制您想要的验证器。以下参考文献
无效的布尔属性。这是每个客户端验证程序的属性 指示它当前是否有效
我做了类似于前两个的事情,但我没有亲自尝试过这个。
一般
一般来说,您使用的方法是直接操作asp.net验证器使用的JavaScript API。它不是很漂亮,但你可以得到你想要的控制
<强>参考强>
这提供了您尝试使用的JavaScript API的参考。这是一篇冗长的文章,但你想要的位置大约是一半
http://msdn.microsoft.com/en-us/library/Aa479045
祝你好运
更多强>
我真的需要离开这个,但你的代码在这里是错误的 - 它是OnClientClick。
btnSend.OnClientClick = "someJavascriptFunction()";
答案 1 :(得分:0)
使用此绑定事件。
btnSend.Attributes.Add("onclick","return someJavascriptFunction();")