登録ページに2つのテキストボックスフィールドがあり、いずれかまたは検証タイプを設定しようとしています。両方のフィールドが空の場合、妥当性検査を開始する必要があります。登録できるようにするには、AフィールドまたはBフィールドのいずれかを入力する必要があります。2つのテキストボックスで検証を入力するか、ASP.NET Webフォーム
私のコードでは以下のようなカスタムバリデータを使用していますが、動作していないようです。私はこれらの2つのテキストボックスを検証するスマートな方法を探しています。サーバー側のバリデーションの部分:私はそれをテストしたとき、ブレークポイントは決して関数にヒットしません。誰かがこれを行うきれいな方法を提案することができます。
ページの他のコントロールでは、フィールドバリデーターが必要ですが、これらの2つのテキストボックスのいずれかまたは条件を設定できる必要があるため、ここにフィールドバリデーターはありません。
<div class="form-group">
<asp:Label Text="" ID="lblSCGrantNumber" runat="server" AssociatedControlID="txtStateCommGrantNumber">
State Commission Number
</asp:Label>
<asp:TextBox ID="txtStateCommGrantNumber" runat="server" TextMode="SingleLine" placeholder="State Commission Grant Number" AutoCompleteType="None" class="form-control"></asp:TextBox>
<%-- <asp:RequiredFieldValidator Display="Dynamic" ID="rfStateCommGrantNumber" Text="Required" SetFocusOnError="true" CssClass="text-danger" ControlToValidate="txtStateCommGrantNumber" runat="server"></asp:RequiredFieldValidator>--%>
<asp:CustomValidator ID="stateCommissionGrants" runat="server" OnServerValidate="ServerValidation" OnClientValidate="Validate_textboxes" ControlToValidate="txtStateCommGrantNumber" ErrorMessage="One of the two fields is required" ValidateEmptyText="true"></asp:CustomValidator>
</div>
<div class="form-group">
<asp:Label Text="" ID="lblGrantNumber" runat="server" AssociatedControlID="txtStateCommGrantNumber">
Grant Number
</asp:Label>
<asp:TextBox ID="txtGrantNumber" runat="server" TextMode="SingleLine" placeholder="Grant Number" AutoCompleteType="None" class="form-control"></asp:TextBox>
<%--<asp:RequiredFieldValidator Display="Dynamic" ID="rfStateCommGrantNumber" Text="Required" SetFocusOnError="true" CssClass="text-danger" ControlToValidate="txtStateCommGrantNumber" runat="server"></asp:RequiredFieldValidator>--%>
<asp:CustomValidator ID="grants" runat="server" OnServerValidate="ServerValidation" OnClientValidate="Validate_textboxes" ControlToValidate="txtGrantNumber" ErrorMessage="One of the two is required" ValidateEmptyText="true"></asp:CustomValidator>
</div>
クライアント側コード:
<script type="text/javascript">
(function Validate_textboxes(sender, args) {
var v = document.getElementById('<%=txtStateCommGrantNumber.ClientID%>').value;
var v = document.getElementById('<%=txtGrantNumber.ClientID%>').value;
if (v == '') {
args.IsValid = false;
}
else {
}
});
サーバーサイドコード:
protected void ServerValidation(object source, ServerValidateEventArgs args)
{
args.IsValid = txtStateCommGrantNumber.Text.Trim().Length > 0 || txtGrantNumber.Text.Trim().Length > 0;
if (!args.IsValid)
{
CustomValidator customvalidator = new CustomValidator();
customvalidator.IsValid = false;
customvalidator.ErrorMessage = "TextBox1 and TexBox2 can't both be empty";
Page.Form.Controls.Add(customvalidator);
}
}
@M Idrees:私はあなたのアプローチを試みましたが、クライアント側は動作しませんでした。この場合はサーバー側ではありません。 –
誰かが別のアプローチを提案できますか? –
テキストボックスが空であることを検証しようとしていますか?私はそれが価値があるまでバリデータを引き起こさないと思う。空の値を検証するには、RequiredFieldValidatorを使用します。 –