javascript - Benutzerdefinierter ASP.Net-Client

Translate

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

Ich habe den Validator-Code in das Feld eingefügtascxDatei, und ich habe auch versucht, mitPage.ClientScript.RegisterClientScriptBlock()In beiden Fällen wird die Validierung ausgelöst, die JavaScript-Funktion kann jedoch nicht gefunden werden.

Die Ausgabe in der Firefox-Fehlerkonsole lautet"feeAmountCheck is not defined". Hier ist die Funktion (diese wurde direkt von Firefox-> View Source übernommen)

<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 Abhilfe schaffen, ohne die Funktion meiner Masterseite oder Verbrauchsseite hinzufügen zu müssen?

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Versuchen Sie, die Argumentnamen in zu ändernsenderundargs. Und nachdem Sie es funktioniert haben, schalten Sie den Anruf auf umScriptManager.RegisterClientScriptBlock, unabhängig von der Verwendung von AJAX.

Quelle
Translate

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

ScriptManager.RegisterClientScriptBlock

In Ajax-Umgebungen funktioniert es besser als in der alten Page.ClientScript-Version

Quelle
Translate

Auch Sie könnten 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'.

Quelle
Translate

Obwohl ich immer noch eine Antwort darauf haben möchte, warum mein Javascript nicht erkannt wurde, besteht die Lösung, die ich in der Zwischenzeit gefunden habe (und eigentlich hätte tun sollen), darin, eine zu verwendenAsp:CompareValidatoranstelle einesAsp:CustomValidator.

Quelle