1
我在註冊頁面上有兩個文本框字段,我正在嘗試設置驗證類型或驗證類型。驗證應該在兩個字段都爲空時啓動,並說您必須輸入A或B字段中的任意一個才能註冊。在2個文本框中輸入或輸入驗證 - ASP.NET Webforms
我在我的代碼中使用了像下面這樣的自定義驗證器,但它似乎不起作用。我正在尋找一種巧妙的方法來驗證這兩個文本框。服務器端驗證部分:當我測試它時,斷點從不碰到函數。有人可以建議一個乾淨的方式做到這一點。
請注意,對於頁面上的其他控件,我需要字段驗證器,我不能在這裏有一個,因爲我應該能夠設置這兩個文本框的任一個或條件。
<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。 –