ASP.Net Benutzerdefinierte clientseitige Validierung

stimmen
23

Ich habe eine Funktion benutzerdefinierte Validierung in JavaScript in einem Benutzer-Steuerelement auf einer Web-Site .Net 2.0, die prüft, zu, dass die Gebühr bezahlt ist nicht über die Höhe des Honorars fällig.

Ich habe den Validator Code in der platzierte ascxDatei, und ich habe auch versucht , mit Page.ClientScript.RegisterClientScriptBlock()und in beiden Fällen die Validierung Bränden, kann aber nicht die JavaScript - Funktion finden.

Der Ausgang in Firefox Fehlerkonsole ist feeAmountCheck is not defined. Hier ist die Funktion (das genommen wurde direkt aus Firefox-> Quelltext anzeigen)

<script type=text/javascript>
    function feeAmountCheck(source, arguments)
    {
        var amountDue = document.getElementById('ctl00_footerContentHolder_Fees1_FeeDue');
        var amountPaid = document.getElementById('ctl00_footerContentHolder_Fees1_FeePaid');

        if (amountDue.value > 0 && amountDue >= amountPaid)
        {
            arguments.IsValid = true;
        }
        else
        {
            arguments.IsValid = false;
        }

        return arguments;
    }
</script>

Irgendwelche Ideen, warum die Funktion nicht gefunden werden? Wie kann ich dies beheben, ohne die Funktion zu meiner Masterseite oder raubend Seite hinzufügen?

Veröffentlicht am 04/08/2008 um 17:44
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
12

Versuchen Sie, die Argumentnamen zu ändern zu senderund args. Und nachdem Sie es arbeiten haben, schalten Sie den Anruf über ScriptManager.RegisterClientScriptBlock, unabhängig von AJAX verwenden.

Beantwortet am 04/08/2008 um 18:02
quelle vom benutzer

stimmen
6

Wenn Sie mit .Net 2.0 und Ajax - sollten Sie verwenden:

ScriptManager.RegisterClientScriptBlock

Es wird in Ajax-Umgebungen besser arbeiten dann die alte Version Page.ClientScript

Beantwortet am 04/08/2008 um 17:51
quelle vom benutzer

stimmen
0

Auch könnten Sie verwenden:

var amountDue = document.getElementById('<%=YourControlName.ClientID%>');

Das wird automatisch die Client - ID für das Element lösen , ohne dass Sie , um herauszufinden , mit , dass es genannt wird 'ctl00_footerContentHolder_Fees1_FeeDue'.

Beantwortet am 13/06/2009 um 19:10
quelle vom benutzer

stimmen
0

Während ich noch eine Antwort, warum mein Javascript möchte nicht erkannt zu werden, fand die Lösung , die ich in der Zwischenzeit (und soll in erster Linie getan habe) ist eine zu verwenden , Asp:CompareValidatoranstatt ein Asp:CustomValidator.

Beantwortet am 04/08/2008 um 20:13
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more