Сведения о вопросе

Kimsanov

16:03, 1st July, 2020

Теги

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

Просмотров: 487   Ответов: 4

У меня есть пользовательская функция проверки в 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>

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



  Сведения об ответе

JUST___

18:03, 1st July, 2020

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


  Сведения об ответе

прога

18:03, 1st July, 2020

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

ScriptManager.RegisterClientScriptBlock

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


  Сведения об ответе

padenie

18:03, 1st July, 2020

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


  Сведения об ответе

qwerty101

18:03, 1st July, 2020

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

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться