javascript - Client personnalisé ASP.Net

Translate

J'ai une fonction de validation personnalisée en JavaScript dans un contrôle utilisateur sur un site Web .Net 2.0 qui vérifie que les frais payés ne dépassent pas le montant des frais dus.

J'ai placé le code de validation dans leascxfichier, et j'ai également essayé d'utiliserPage.ClientScript.RegisterClientScriptBlock()et dans les deux cas, la validation se déclenche, mais ne parvient pas à trouver la fonction JavaScript.

La sortie de la console d'erreur de Firefox est"feeAmountCheck is not defined". Voici la fonction (elle a été prise directement à partir de firefox-> voir la source)

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

Des idées sur les raisons pour lesquelles la fonction n'est pas trouvée? Comment puis-je remédier à cela sans avoir à ajouter la fonction à ma page maître ou à ma page de consommation?

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

Toutes les réponses

Translate

Essayez de changer les noms des arguments ensenderetargs. Et, une fois que cela fonctionne, basculez l'appel surScriptManager.RegisterClientScriptBlock, quelle que soit l'utilisation d'AJAX.

La source
Translate

Lorsque vous utilisez .Net 2.0 et Ajax, vous devez utiliser:

ScriptManager.RegisterClientScriptBlock

Cela fonctionnera mieux dans les environnements Ajax que l'ancienne version de Page.ClientScript

La source
Translate

Vous pouvez également utiliser:

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

Cela résoudra automatiquement l'ID client de l'élément sans que vous ayez à comprendre qu'il est appelé'ctl00_footerContentHolder_Fees1_FeeDue'.

La source
Translate

Bien que j'aimerais toujours savoir pourquoi mon javascript n'a pas été reconnu, la solution que j'ai trouvée entre-temps (et j'aurais dû le faire en premier lieu) est d'utiliser unAsp:CompareValidatorau lieu d'unAsp:CustomValidator.

La source