我正在处理一个Web应用程序,我遇到了RequiredFieldValidator的问题。
我有一个“插入电影”按钮,以及包含其他两个按钮(保存电影和取消)的div,一个用于标题的TextBox,一个用于描述的TextBox和一个用于Title的RequiredFieldValidator。 默认情况下不显示此div。 这是我的问题: 当我单击插入时,在客户端我使用javascript来隐藏插入按钮并显示我的div。 单击按钮我创建一个PostBack,我的div显示与RequiredFieldValidator错误消息。 我不想要这种行为。我想在点击保存按钮后显示验证错误。 这是我的代码......
<head runat="server">
<title>Validation Test</title>
<script src="Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
ValidatorEnable(document.getElementById('<%= TitleValidator.ClientID%>'), false);
});
function ShowInsertForm() {
ValidatorEnable(document.getElementById('<%= TitleValidator.ClientID%>'), true);
$('#InsertForm').show();
}
function HideInsertForm() {
$('#InsertForm').hide();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Insert" runat="server" Text="Insert Movie" OnClientClick="ShowInsertForm();"/>
</div>
<div id="InsertForm" style="display:none">
<asp:Button ID="Save" runat="server" Text="Save Movie" onclick="Save_Click" OnClientClick="HideInsertForm();"/>
<asp:Button ID="Cancel" runat="server" Text="Cancel Movie" CausesValidation="false" OnClientClick="HideInsertForm();"/>
<br />
Title<asp:TextBox ID="Title" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="TitleValidator" runat="server"
ErrorMessage="Please insert Title" ControlToValidate="Title"></asp:RequiredFieldValidator>
<br />
Description<asp:TextBox ID="Description" runat="server"></asp:TextBox>
</div>
</form>
</body>
答案 0 :(得分:1)
1-当您使用“插入”按钮仅用于客户端幻灯片功能时,我建议使用<asp:button>
替换html button tag
控件。这样它就不再激发验证。
2-如果您必须使用asp:button
,则可以将其causeValidation
设置为false
。甚至可以通过编辑post-back
函数
ShowInsertForm
function ShowInsertForm() {
ValidatorEnable(document.getElementById('<%= TitleValidator.ClientID%>'), true);
$('#InsertForm').show();
return false;
}