客户端自定义验证

本文关键字:验证 自定义 客户端 | 更新日期: 2023-09-27 18:07:53

我有一个文本框来保存电话号码和下拉列表,列出移动提供商。我正在努力确保两者都被选中。我使用客户验证器和客户端验证器,使用验证组。同样的验证组被分配给"Update"按钮。

当我添加电话号码而没有移动提供商时,或者反之亦然,一旦控制失去焦点就会显示错误消息。但如果我点击"更新"按钮,没有错误显示,更新愉快地继续更新。看不出我做错了什么。文本框和下拉框都没有设置自动回退。

function ValidateMobile(oSrc, args) {
    var tbMobile = document.getElementById('<%=tbMobile.ClientID%>');
    var ddlMobileProvider = document.getElementById('<%=ddlMobileProvider.ClientID%>');
    args.IsValid = true;
    var mobileNum = tbMobile.value.trim();
    var selectedCarrierValue = ddlMobileProvider.options[ddlMobileProvider.selectedIndex].value;
    if ((mobileNum != "" && selectedCarrierValue == "") || (mobileNum == "" && selectedCarrierValue != ""))
        args.IsValid = false;
}
<asp:TextBox runat="server" ID="tbMobile" CssClass="NormalSmall" Width="95%" />
<ajaxToolkit:MaskedEditExtender runat="server" ID="mtbMobile" TargetControlID="tbMobile" Mask="(999) 999-9999" />
<asp:DropDownList runat="server" ID="ddlMobileProvider" Width="95%" DataSourceID="odsMobileProviders" DataTextField="CARRIERNAME"  DataValueField="MOBILECARRIERID" AppendDataBoundItems="true">
    <asp:ListItem Text="Select Mobile Provider ..." Value="" />
</asp:DropDownList>
<asp:ImageButton runat="server" ID="ibUpdate"  ImageUrl="~/assets/images/buttons/Update.png" OnClick="ibUpdate_Click"  CausesValidation="true" ValidationGroup="vgCustInfo" />
<asp:CustomValidator runat="server" ID="cvMobile"  ControlToValidate="tbMobile" Display="Dynamic" ValidationGroup="vgCustInfo"  ClientValidationFunction="ValidateMobile" ErrorMessage="Both Carrier and Mobile Number must be specified"></asp:CustomValidator>

客户端自定义验证

function ValidateMobile() {
var tbMobile = document.getElementById('<%=tbMobile.ClientID%>');
var ddlMobileProvider = document.getElementById('<%=ddlMobileProvider.ClientID%>');
args.IsValid = true;
var mobileNum = tbMobile.value.trim();
var selectedCarrierValue = ddlMobileProvider.options[ddlMobileProvider.selectedIndex].value;
if ((mobileNum != "" && selectedCarrierValue == "") || (mobileNum == "" && selectedCarrierValue != ""))
    args.IsValid = false;

}