ASP.Net Пользовательская проверка на стороне клиента

У меня есть пользовательская функция проверки в JavaScript в пользовательском элементе управления на веб-сайте .Net 2.0, которая проверяет, не уплачена ли сумма, подлежащая уплате.

Я поместил код валидатора в ascxфайл, и я также попытался использовать, Page.ClientScript.RegisterClientScriptBlock()и в обоих случаях проверка запускается, но не могу найти функцию JavaScript.

Выход в консоли ошибок Firefox является "feeAmountCheck is not defined". Вот функция (это было взято непосредственно из 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>

Есть идеи, почему функция не найдена? Как я могу исправить это, не добавляя функцию на мою главную страницу или страницу потребления?

4.08.2008 16:44:25
4 ОТВЕТА
РЕШЕНИЕ

Попробуйте изменить имена аргументов на senderи args. И после того, как он заработает, переключите вызов на ScriptManager.RegisterClientScriptBlock, независимо от использования AJAX.

17
27.09.2016 07:32:59

Когда вы используете .Net 2.0 и Ajax - вы должны использовать:

ScriptManager.RegisterClientScriptBlock

Это будет работать лучше в средах Ajax, чем старая версия Page.ClientScript

6
27.01.2013 12:16:49

Также вы можете использовать:

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

Это автоматически разрешит идентификатор клиента для элемента без необходимости выяснять, как он вызывается 'ctl00_footerContentHolder_Fees1_FeeDue'.

0
13.06.2009 18:10:19

Хотя я все еще хотел бы получить ответ на вопрос, почему мой javascript не был распознан, решение, которое я тем временем нашел (и должен был сделать в первую очередь), заключается в использовании Asp:CompareValidatorвместо Asp:CustomValidator.

0
27.09.2016 07:54:22