在我的要求中,我需要使用1个编辑器,而且requiredfieldvalidator对此Editor控件不起作用。所以我只需点击一下按钮,就可以通过asp控件验证器通过javascript和其余的asp.net控件来验证这个控件。
我正在尝试通过aspnet服务器端控制和客户端验证通过javascript实现服务器端验证。 我有两个文本框控件和一个提交按钮,如下所示:
<div>
<asp:TextBox ID="Txt1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RfvTxt1" runat="server" ErrorMessage="*" ForeColor="Red"
ControlToValidate="Txt1"></asp:RequiredFieldValidator>
<asp:TextBox ID="Txt2" runat="server"></asp:TextBox>
<asp:Button ID="btnsubmit" runat="server" OnClick="btnsubmit_Click" Text="Submit"
OnClientClick=" return ss();" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
<script src="JS/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function ss() {
var script = $("#<%=Txt2.ClientID %>").val();
if (script == "") {
alert(1);
return false;
}
}
</script>
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = "dd";
}
protected void btnsubmit_Click(object sender, EventArgs e)
{
Label1.Text = "ss";
}
但验证都不起作用。 问题是,当第二个文本框包含文本时。页面回发并运行它事件,即使第一个文本框不包含其文本。 感谢您的帮助。
答案 0 :(得分:2)
我正在为您的查询提供解决方案。 您必须在客户端验证功能的其他条件下再次启用所有服务器验证。
function ss()
{
var script = $("#<%=Txt2.ClientID %>").val();
if (script == "")
{
alert(1);
Page_ClientValidate();
return false;
}
else
{
Page_ClientValidate();
}
}
OR
只需将按钮更改为:
protected void btnsubmit_Click(object sender,EventArgs e) { if(Page.IsValid) { Label1.Text =“ss”; } }
答案 1 :(得分:1)
为什么不是2个RequiredFieldValidators,每个TextBox一个?
<div>
<asp:TextBox ID="Txt1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RfvTxt1" runat="server" ErrorMessage="*" ForeColor="Red"
ControlToValidate="Txt1"></asp:RequiredFieldValidator>
<asp:TextBox ID="Txt2" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RfvTxt2" runat="server" ErrorMessage="*" ForeColor="Red"
ControlToValidate="Txt2"></asp:RequiredFieldValidator>
<asp:Button ID="btnsubmit" runat="server" OnClick="btnsubmit_Click" Text="Submit" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
或者,如果您真的想要使用自定义验证,请使用CustomValidator
。以下是客户端和服务器端验证的示例:
<div>
<asp:TextBox ID="Txt1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RfvTxt1" runat="server" ErrorMessage="*" ForeColor="Red"
ControlToValidate="Txt1"></asp:RequiredFieldValidator>
<asp:TextBox ID="Txt2" runat="server"></asp:TextBox>
<asp:CustomValidator id="CustomValidator1"
ControlToValidate="Txt2"
ClientValidationFunction="ClientValidate"
OnServerValidate="ServerValidation"
ErrorMessage="*"
ForeColor="Red"
runat="server"/>
<asp:Button ID="btnsubmit" runat="server" OnClick="btnsubmit_Click" Text="Submit" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
<script language="javascript">
function ClientValidate(source, arguments)
{
if (arguments.Value == "" ){
arguments.IsValid = true;
} else {
arguments.IsValid = false;
}
}
</script>
<script runat="server">
void ServerValidation(object source, ServerValidateEventArgs args)
{
return !String.IsNullOrEmpty(args.Value);
}
</script>
答案 2 :(得分:0)
您可以使用ValidationGroup
将控件与提交按钮绑定
并确保您在Button等于CauseValidation
True
属性
修改强>
document.getElementById('<%=txt2.ClientID%>').value;
试试这个 可能有帮助