2016-09-20 37 views
0

Ich habe ein Textfeld für die Telefonnummer und eine Dropdown-Liste, in der die Mobilfunkanbieter aufgelistet sind. Ich versuche sicherzustellen, dass beide ausgewählt sind. Ich benutze einen Kundenvalidator mit clientseitiger Validierung unter Verwendung einer Validierungsgruppe. Die gleiche Validierungsgruppe ist einer Schaltfläche "Aktualisieren" zugeordnet.Clientseitige benutzerdefinierte Validierung

Wenn ich eine Telefonnummer und keinen Mobilfunkanbieter hinzufüge oder umgekehrt, wird eine Fehlermeldung angezeigt, sobald die Steuerung den Fokus verliert. Aber wenn ich auf den "Update" -Button klicke, wird kein Fehler angezeigt und das Update geht fröhlich weiter. Ich kann nicht sehen, was ich falsch mache. Keiner der Textfelder oder der Dropdown-Liste hat Autopostback festgelegt.

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> 

Antwort

0
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; 

}

+0

wie ist das anders als meine ursprüngliche Funktion? – NoBullMan

+0

Ihre Funktion ist korrekt, aber der Aufruf dieser Funktion ist falsch. Aufruf der Funktion onclientclick = "return Functionname()". das funktioniert richtig –

Verwandte Themen