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

StackOverflow https://stackoverflow.com/questions/1401

  •  08-06-2019
  •  | 
  •  

Вопрос

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

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

Вывод в консоли ошибок Firefox: "feeAmountCheck is not defined".Вот функция (взята непосредственно из источника Firefox->view)

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

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

Это было полезно?

Решение

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

Другие советы

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

ScriptManager.RegisterClientScriptBlock

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top