我在模式对话框内的文本框上有以下验证器.
<asp:RequiredFieldValidator runat = "server"
ErrorMessage = "Role name can not be empty."
ControlToValidate = "tbxRoleName" />
Run Code Online (Sandbox Code Playgroud)
它的工作原理应该是这样,除了验证触发aspx页面上的每个其他按钮OnClick处理程序.由于对话框不可见,看起来按钮只是在页面上不起作用.我的解决方法是在页面上的所有按钮上添加CausesValidation ="false".但这是一个非常糟糕的解决方案,我认为应该有一个更聪明的方法.
我正在使用向导,用户可以在其中注册.有一个asp:RadioButtonList有两个选项,当radiobutton改变时,向导中的一些输入字段会改变.在每个字段上都有一些asp:Validators(例如asp:RequiredFieldValidator).问题是,当用户提交页面时,隐藏文本框的验证器仍然会弹出.
首先,这里是div标签,它改变了显示的文本框和RadioButtonList
<div id="divTxt1">
<asp:TextBox runat="server" CssClass="text" ID="txtNumber"
type="number"/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
runat="server" ControlToValidate="txtNumber" EnableClientScript="true" ErrorMessage="Error" ToolTip="Error">*
</asp:RequiredFieldValidator>
</div>
<div id="divTxt2">
<asp:TextBox runat="server" CssClass="text" ID="txtNumber2"
type="number"/>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2"
runat="server" ControlToValidate="txtNumber2" EnableClientScript="true" ErrorMessage="Error2" ToolTip="Error2">*
</asp:RequiredFieldValidator>
</div>
<div id="radio">
<asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="1" Selected="True">Privat</asp:ListItem>
<asp:ListItem Value="2">Offentlig</asp:ListItem>
</asp:RadioButtonList>
</div>
Run Code Online (Sandbox Code Playgroud)
我试图使用类似下面的JQuery来解决它,我已经读过它应该做的伎俩,但不幸的是它没有:
$(document).ready(function () {
$('#<%= WizardStep1.ContentTemplateContainer.FindControl("RadioButtonList1").ClientID %> input').change(function () {
if ($(this).val() == "1") {
$('#txtNumber').toggle('fast');
$('#txtNumber2').toggle('fast');
ValidatorEnable($('#<%=WizardStep1.ContentTemplateContainer.FindControl("RequiredFieldValidator1").ClientID %>')[0], false);
ValidatorEnable($('#<%=WizardStep1.ContentTemplateContainer.FindControl("RequiredFieldValidator2").ClientID %>')[0], true);
}
if ($(this).val() == "2") {
$('#txtNumber').toggle('fast');
$('#txtNumber2').toggle('fast');
ValidatorEnable($('#<%=WizardStep1.ContentTemplateContainer.FindControl("RequiredFieldValidator2").ClientID %>')[0], …Run Code Online (Sandbox Code Playgroud) 嗨我有一个RequiredFieldValidator像这样
<asp:TextBox ID="txtEmployeeID" runat="server" MaxLength="255" CssClass="txt"
OnTextChanged="txtEmployeeID_TextChanged" AutoPostBack="True"
ValidationGroup="Save" ></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvEmployeeID" runat="server"
ErrorMessage="Employee ID is required information."
ControlToValidate="txtEmployeeID" Display="None" ValidationGroup="Save"
SetFocusOnError="True"></asp:RequiredFieldValidator>
Run Code Online (Sandbox Code Playgroud)
和这样的按钮
<asp:Button ID="btnBlockUser" runat="server" Text="Block User"
CssClass="submitBtn " OnClick="btnBlockUser_Click"
OnClientClick="javascript:return confirm('Are you sure want to Block this user ?')"
ValidationGroup="Save" />
Run Code Online (Sandbox Code Playgroud)
现在的问题是,如果我删除按钮中的OnClientClick,RequriedFieldValidator工作正常如果我把它回到那里页面帖子没有显示任何错误消息可以有人解释为什么这发生?
如何只为多个RequiredFieldValidator而不是单个消息显示单个消息RequiredFieldValidator?
我想如下图所示..

我的观点是......

我的ASP.NET表单中有一个非标准的提交按钮.
<a class="button" href="#" onclick="this.blur();SubmitForm();"><span>Submit</span></a>
Run Code Online (Sandbox Code Playgroud)
因此,我的所需字段验证器不会在客户端调用.如何通过Javascript调用必需的字段验证器?
或者,是否有更好的方法来完成我想要做的事情?
我有一个下拉菜单,用户选择一个国家/地区.这是一个必需的"领域".
在它旁边,有一个名为State的文本字段.如果用户选择US,则需要字段State.如果用户选择例如瑞典,则不需要国家,因为瑞典没有州.
示例代码:
<asp:DropDownList runat="server" ID="Country"></asp:DropDownList>
<asp:RequiredFieldValidator ControlToValidate="Country"
runat="server" Display="Static" ErrorMessage="Required field" />
<asp:TextBox runat="server" ID="State"></asp:TextBox>
<asp:CustomValidator ClientValidationFunction="DoesntGetFiredIfStateIsEmpty"
runat="server" Display="Static" ErrorMessage="Required field" />
<!-- SO, RATHER THIS TOGETHER WITH CONDITIONAL FIRING -->
<asp:RequiredFieldValidator ControlToValidate="State"
runat="server" Display="Static" ErrorMessage="Required field" />
Run Code Online (Sandbox Code Playgroud)
我向您提出的问题是:如果CustomValidator为空,我该如何进行防火验证?
或者说更简单:如何有条件地使RequiredValidator火灾?
或者最简单:如何在客户端启用/禁用RequiredValidator?
我有一个简单的Web表单,其中包含一个文本框和一个RequiredFieldValidator.触发RequiredFieldValidator错误时,用户必须单击提交两次才能发布表单.第一次单击清除错误,第二次实际触发按钮单击事件.这是预期的行为吗?
<asp:RequiredFieldValidator ID="reqFieldCloseComment" ControlToValidate="tbCloseComment" ValidationGroup="ChangeStatus" ErrorMessage="Please enter a reason" Display="Dynamic" runat="server"></asp:RequiredFieldValidator>
<asp:TextBox ID="tbCloseComment" runat="server" CausesValidation="true" TextMode="MultiLine" Height="107px" Width="400px"></asp:TextBox>
<asp:Button ID="btnCloseRequestFinal" Text="Finish" CssClass="CloseReqButton" runat="server" ValidationGroup="ChangeStatus" />
Run Code Online (Sandbox Code Playgroud)
我尝试CausesValidation根据Google搜索中发现的建议添加到文本框中,但这并没有帮助.
编辑似乎并不总是需要双击才能触发事件.只要将文本输入文本框,然后将焦点从文本框中删除,RequiredFieldValidator错误消息就会消失,表单只需单击一下即可.
我有一个带有两个RequiredFieldValidator的ASPX页面和一个转到另一个页面的按钮.此按钮必须进行回发才能知道要去哪里.可以随时单击此按钮.
问题是RequiredFieldValidators未被禁用,并显示要求输入值的消息.
当用户单击此特殊按钮时,有什么方法可以避免验证吗?
谢谢!
我想使用PHP过滤器功能快速过滤表单并向用户显示反馈.我的表单中的某些字段是必需的,有些则不是.
我将用来filter_input_array()过滤我的所有字段.我会在多次运行中传递数据.通过这种方式,我将能够显示多个错误消息.
我有一个问题:如何忽略不需要的空字段?我没有看到它的过滤器.
更新:澄清过滤器和错误消息的要求:
我想使用过滤器来检查:
我想为每种类型的错误显示错误消息,每个字段最多显示1条错误消息.
我有一对单选按钮列表(是/否):
Q1.(Y)(N)
Q2.(Y)(N)
Q3.(Y)(N)
Q4.(Y)(N)
Run Code Online (Sandbox Code Playgroud)
我的模型中有一个属性
public string MedicalExplanation { get; set; }
我的目标是如果任何单选按钮设置为true,则需要解释.
我的第一次尝试是使用,[Required]但它不处理条件.
然后我决定使用像MVC Foolproof Validation这样的第三方工具我用它如下:
[RequiredIf("Q1", true, ErrorMessage = "You must explain any \"Yes\" answers!")]
现在问题是如果检查了其他Q2,Q3,Q4中的任何一个,我不知道如何使它成为必需.
请指教
asp.net ×8
validation ×3
c# ×2
asp.net-mvc ×1
client ×1
javascript ×1
jquery ×1
php ×1
webforms ×1
wizard ×1