ASP.Net Custom Client-side validatie

stemmen
23

Ik heb een aangepaste validatie functie in JavaScript in een user control op een .Net 2.0 website die controleert om te zien dat de betaalde vergoeding is niet hoger dan de vergoeding bedrag.

Ik heb de validator code in de geplaatste ascxbestand, en ik heb ook geprobeerd met behulp van Page.ClientScript.RegisterClientScriptBlock()en in beide gevallen de validatie branden, maar kan de JavaScript-functie niet vinden.

De output in Firefox fout console is feeAmountCheck is not defined. Hier is de functie (dit is rechtstreeks afkomstig uit firefox- genomen> 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>

Enig idee waarom de functie niet wordt gevonden? Hoe kan ik dit oplossen zonder dat u de functie toe te voegen aan mijn meester pagina of consumeren page?

De vraag is gesteld op 04/08/2008 om 17:44
bron van user
In andere talen...                            


4 antwoorden

stemmen
12

Probeer het veranderen van de argument namen senderen args. En na heb je het werkt, schakelt u de oproep over naar ScriptManager.RegisterClientScriptBlock, ongeacht AJAX gebruik.

antwoordde op 04/08/2008 om 18:02
bron van user

stemmen
6

Bij gebruik van .Net 2.0 en Ajax - je moet gebruiken:

ScriptManager.RegisterClientScriptBlock

Het zal beter werken in Ajax omgevingen dan de oude Page.ClientScript versie

antwoordde op 04/08/2008 om 17:51
bron van user

stemmen
0

Ook u zou kunnen gebruiken:

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

Dat zal automatisch de client id voor het element op te lossen zonder dat u erachter te komen dat het heet 'ctl00_footerContentHolder_Fees1_FeeDue'.

antwoordde op 13/06/2009 om 19:10
bron van user

stemmen
0

Terwijl ik nog steeds een antwoord op waarom mijn javascript werd niet herkend zou willen, de oplossing vond ik in de tussentijd (en had moeten doen in de eerste plaats) is om een te gebruiken Asp:CompareValidatorin plaats van een Asp:CustomValidator.

antwoordde op 04/08/2008 om 20:13
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more