javascript - Client personalizzato ASP.Net

original title: "javascript - ASP.Net Custom Client-Side Validation"


I have a custom validation function in JavaScript in a user control on a .Net 2.0 web site which checks to see that the fee paid is not in excess of the fee amount due.

I've placed the validator code in the ascx file, and I have also tried using Page.ClientScript.RegisterClientScriptBlock() and in both cases the validation fires, but cannot find the JavaScript function.

The output in Firefox's error console is "feeAmountCheck is not defined". Here is the function (this was taken directly from 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;
            arguments.IsValid = false;

        return arguments;

Any ideas as to why the function isn't being found? How can I remedy this without having to add the function to my master page or consuming page?

Ho una funzione di convalida personalizzata in JavaScript in un controllo utente su un sito Web .Net 2.0 che verifica che la commissione pagata non superi l'importo della commissione dovuta. Ho inserito il validatore ...

Questo è il riepilogo dopo la traduzione, se è necessario visualizzare la traduzione completa, fare clic sull'icona "traduci"

Tutte le risposte
  • Translate

    Try changing the argument names to sender and args. And, after you have it working, switch the call over to ScriptManager.RegisterClientScriptBlock, regardless of AJAX use.

  • Translate

    When you're using .Net 2.0 and Ajax - you should use:


    It will work better in Ajax environments then the old Page.ClientScript version

  • Translate

    Also you could use:

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

    That will automatically resolve the client id for the element without you having to figure out that it's called 'ctl00_footerContentHolder_Fees1_FeeDue'.

  • Translate

    While I would still like an answer to why my javascript wasn't being recognized, the solution I found in the meantime (and should have done in the first place) is to use an Asp:CompareValidator instead of an Asp:CustomValidator.