Domanda

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

Ho inserito il codice di convalida nel file ascx file e ho anche provato a utilizzare Page.ClientScript.RegisterClientScriptBlock() e in entrambi i casi la convalida si attiva, ma non riesce a trovare la funzione JavaScript.

L'output nella console degli errori di Firefox è "feeAmountCheck is not defined".Ecco la funzione (questa è stata presa direttamente da Firefox->visualizza sorgente)

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

Qualche idea sul motivo per cui la funzione non viene trovata?Come posso rimediare a questo senza dover aggiungere la funzione alla mia pagina master o alla pagina di consumo?

È stato utile?

Soluzione

Prova a cambiare i nomi degli argomenti in sender E args.E, dopo averlo funzionato, trasferisci la chiamata a ScriptManager.RegisterClientScriptBlock, indipendentemente dall'uso di AJAX.

Altri suggerimenti

Quando utilizzi .Net 2.0 e Ajax, dovresti utilizzare:

ScriptManager.RegisterClientScriptBlock

Funzionerà meglio negli ambienti Ajax rispetto alla vecchia versione Page.ClientScript

Inoltre potresti usare:

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

Ciò risolverà automaticamente l'ID client per l'elemento senza che tu debba capire come viene chiamato 'ctl00_footerContentHolder_Fees1_FeeDue'.

Anche se vorrei ancora una risposta al motivo per cui il mio Javascript non veniva riconosciuto, la soluzione che ho trovato nel frattempo (e che avrei dovuto fare in primo luogo) è usare un Asp:CompareValidator invece di un Asp:CustomValidator.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top