ASP.Net klienta Client-Side Validation

głosy
23

Mam zwyczaj sprawdzania funkcji w JavaScript w kontroli użytkownika na stronie internetowej .NET 2.0, który sprawdza, że ​​opłata wnoszona nie przekracza kwoty należnej opłaty.

Mam umieszczony kod validator w ascxpliku, a Próbowałem również przy użyciu Page.ClientScript.RegisterClientScriptBlock()iw obu przypadkach pożarów walidacji, ale nie może znaleźć funkcji JavaScript.

Wyjście w konsoli błędów Firefoksa jest feeAmountCheck is not defined. Oto funkcja (zostało to wzięte bezpośrednio z firefox-> pokaż źródło)

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

Wszelkie pomysły, dlaczego ta funkcja nie jest znaleźć? Jak mogę rozwiązać ten bez konieczności dodać funkcję do mojej stronie wzorcowej lub spożywania stronę?

Utwórz 04/08/2008 o 17:44
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
12

Spróbuj zmienić nazwy argumentów do sendera args. A po masz to działa, przełączyć rozmowę na celu ScriptManager.RegisterClientScriptBlock, niezależnie od AJAX użytkowania.

Odpowiedział 04/08/2008 o 18:02
źródło użytkownik

głosy
6

Kiedy używasz .NET 2.0 i Ajax - należy użyć:

ScriptManager.RegisterClientScriptBlock

Będzie ona działać lepiej w środowiskach Ajax wówczas starą wersję Page.ClientScript

Odpowiedział 04/08/2008 o 17:51
źródło użytkownik

głosy
0

Również można użyć:

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

Które automatycznie rozwiąże identyfikator klienta dla elementu bez konieczności dowiedzieć się, że to się nazywa 'ctl00_footerContentHolder_Fees1_FeeDue'.

Odpowiedział 13/06/2009 o 19:10
źródło użytkownik

głosy
0

Chociaż ja i tak lubię odpowiedź dlaczego mój javascript nie był rozpoznany, rozwiązanie znalazłem w międzyczasie (i powinien zrobić w pierwszej kolejności) jest użyć Asp:CompareValidatorzamiast Asp:CustomValidator.

Odpowiedział 04/08/2008 o 20:13
źródło użytkownik

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