Frage

Ich habe eine benutzerdefinierte Validierungsfunktion in JavaScript in einem Benutzersteuerelement auf einer .Net 2.0-Website, die prüft, ob die gezahlte Gebühr den fälligen Gebührenbetrag nicht übersteigt.

Ich habe den Validierungscode in das eingefügt ascx Datei, und ich habe auch versucht, sie zu verwenden Page.ClientScript.RegisterClientScriptBlock() In beiden Fällen wird die Validierung ausgelöst, die JavaScript-Funktion kann jedoch nicht gefunden werden.

Die Ausgabe in der Fehlerkonsole von Firefox lautet "feeAmountCheck is not defined".Hier ist die Funktion (diese wurde direkt aus Firefox übernommen -> Quelle 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 wird?Wie kann ich das beheben, ohne die Funktion zu meiner Masterseite oder meiner konsumierenden Seite hinzufügen zu müssen?

War es hilfreich?

Lösung

Versuchen Sie, die Argumentnamen in zu ändern sender Und args.Und wenn es funktioniert, schalten Sie den Anruf auf um ScriptManager.RegisterClientScriptBlock, unabhängig von der AJAX-Nutzung.

Andere Tipps

Wenn Sie .Net 2.0 und Ajax verwenden, sollten Sie Folgendes verwenden:

ScriptManager.RegisterClientScriptBlock

Es funktioniert in Ajax-Umgebungen besser als die alte Page.ClientScript-Version

Sie könnten auch Folgendes verwenden:

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

Dadurch wird die Client-ID für das Element automatisch aufgelöst, ohne dass Sie herausfinden müssen, dass es aufgerufen wird 'ctl00_footerContentHolder_Fees1_FeeDue'.

Während ich immer noch gerne eine Antwort darauf hätte, warum mein Javascript nicht erkannt wurde, besteht die Lösung, die ich inzwischen gefunden habe (und die ich eigentlich hätte tun sollen), darin, eine zu verwenden Asp:CompareValidator statt eines Asp:CustomValidator.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top