Question

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 du validateur dans le ascx fichier, et j'ai également essayé d'utiliser Page.ClientScript.RegisterClientScriptBlock() et dans les deux cas, la validation se déclenche, mais ne trouve pas la fonction JavaScript.

La sortie dans la console d'erreur de Firefox est "feeAmountCheck is not defined".Voici la fonction (elle a été extraite directement de Firefox->View 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>

Avez-vous une idée de la raison pour laquelle 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 ?

Était-ce utile?

La solution

Essayez de changer les noms des arguments en sender et args.Et, une fois que cela fonctionne, basculez l'appel vers ScriptManager.RegisterClientScriptBlock, quelle que soit l'utilisation d'AJAX.

Autres conseils

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

Vous pouvez également utiliser :

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

Cela résoudra automatiquement l'identifiant client de l'élément sans que vous ayez à comprendre qu'il s'appelle 'ctl00_footerContentHolder_Fees1_FeeDue'.

Même si 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û la faire en premier lieu) est d'utiliser un Asp:CompareValidator au lieu d'un Asp:CustomValidator.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top