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

Проверка на стороне клиента

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

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

4 ответа

Попробуйте изменить имена аргументов на 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.

Метод ScriptManager.RegisterClientScriptBlock

Регистрирует блок сценария клиента в элементе управления ScriptManager для использования с элементом управления, находящимся внутри элемента управления UpdatePanel, а затем добавляет блок сценария на страницу.

Перегрузки

RegisterClientScriptBlock(Control, Type, String, String, Boolean)

Регистрирует блок сценария клиента в элементе управления ScriptManager для использования с элементом управления, находящимся внутри элемента управления UpdatePanel, а затем добавляет блок сценария на страницу.

RegisterClientScriptBlock(Page, Type, String, String, Boolean)

Регистрирует блок сценария клиента в элементе управления ScriptManager для использования с элементом управления, находящимся внутри элемента управления UpdatePanel, а затем добавляет блок сценария на страницу.

Синтаксис (RegisterClientScriptBlock(Control, Type, String, String, Boolean))

C#
public static void RegisterClientScriptBlock (System.Web.UI.Control control, Type type, string key, string script, bool addScriptTags);

Параметры

control

Control. Элемент управления, регистрирующий блок клиентского скрипта.

type

Type. Тип блока клиентского скрипта. Этот параметр обычно задается с помощью оператора typeof (C#) или оператора GetType (Visual Basic) для получения типа элемента управления, регистрирующего скрипт.

key

String. Уникальный идентификатор блока скрипта.

script

String. Сценарий.

addScriptTags

Boolean. Значение true, чтобы заключить блок скрипта в теги <script> и </script>; в противном случае false.

Описание

Регистрирует блок сценария клиента в элементе управления ScriptManager для использования с элементом управления, находящимся внутри элемента управления UpdatePanel, а затем добавляет блок сценария на страницу.

Метод RegisterClientScriptBlock используется для регистрации блока клиентского скрипта, совместимого с частичной отрисовкой страницы и не имеющего зависимостей библиотеки Microsoft Ajax. Блоки клиентского скрипта, зарегистрированные с помощью этого метода, отправляются на страницу только в том случае, если элемент управления представляет собой элемент управления, находящийся внутри обновляемого элемента управления UpdatePanel. Чтобы регистрировать блок скрипта каждый раз, когда происходит асинхронная обратная передача, используйте перегрузку RegisterClientScriptBlock(Page, Type, String, String, Boolean) этого метода.

Если вы хотите зарегистрировать блок скрипта, который не относится к частичному обновлению страницы, и если вы хотите зарегистрировать блок скрипта только один раз во время начального рендеринга страницы, используйте метод RegisterClientScriptBlock класса ClientScriptManager. Вы можете получить ссылку на объект ClientScriptManager из свойства ClientScript страницы.

Синтаксис (RegisterClientScriptBlock(Page, Type, String, String, Boolean))

C#
public static void RegisterClientScriptBlock (System.Web.UI.Page page, Type type, string key, string script, bool addScriptTags);

Параметры

page

Page. Объект страницы, который регистрирует блок клиентского скрипта.

type

Type. Тип блока клиентского скрипта. Этот параметр обычно задается с помощью оператора typeof (C#) или оператора GetType (Visual Basic) для получения типа элемента управления, регистрирующего скрипт.

key

String. Уникальный идентификатор блока скрипта.

script

String. Скрипт для регистрации.

addScriptTags

Boolean. Значение true, чтобы заключить блок скрипта в теги <script> and </script>; в противном случае false.

Описание

Регистрирует блок сценария клиента в элементе управления ScriptManager для использования с элементом управления, находящимся внутри элемента управления UpdatePanel, а затем добавляет блок сценария на страницу.

Когда вы регистрируете блок сценария с помощью этого метода, сценарий обрабатывается каждый раз, когда происходит асинхронная обратная передача. Чтобы зарегистрировать блок сценария для элемента управления, находящегося внутри элемента управления UpdatePanel, чтобы сценарий регистрировался только при обновлении элемента управления UpdatePanel, используйте перегрузку этого метода RegisterClientScriptBlock(Control, Type, String, String, Boolean).

Если вы хотите зарегистрировать блок скрипта, который не относится к частичному обновлению страницы, и если вы хотите зарегистрировать блок скрипта только один раз во время начального рендеринга страницы, используйте метод RegisterClientScriptBlock класса ClientScriptManager. Вы можете получить ссылку на объект ClientScriptManager из свойства ClientScript страницы.

Document.getElementById()

Объект Element, описывающий объект элемента DOM, соответствующий указанному идентификатору, или null, если в документе не найден соответствующий элемент.

Синтаксис

getElementById(id)

Параметры

id

Идентификатор элемента, который необходимо найти. Идентификатор — это чувствительная к регистру строка, которая уникальна в пределах документа; только один элемент может иметь любой заданный идентификатор.

Описание

Метод документа getElementById() возвращает объект Element, представляющий элемент, свойство id которого соответствует указанной строке. Поскольку идентификаторы элементов должны быть уникальными, если они указаны, они являются полезным способом быстрого доступа к определенному элементу.

Если вам нужно получить доступ к элементу, у которого нет идентификатора, вы можете использовать querySelector(), чтобы найти элемент с помощью любого селектора.

Multiply (Умножение) | JavaScript (решено) | codewars

Умножение (Multiply) - JavaScript - codewars

Этот код не выполняется должным образом. Попытайтесь понять, почему. Решение function multiply(a, b) { return a * b; } Умножение Умножение целых чисел можно рассматривать как многократное сложение; то есть умножение двух чисел эквивалентно прибавлению количества копий одного из них, множимого, к количеству другого, множителя. Оба числа можно назвать факторами. Пример: 3 * 4 = 4 + 4 + 4 = 12 return Оператор return завершает выполнение функции и указывает значение, которое должно быть возвращено вызывающей функции. Синтаксис return [выражение]; Параметры выражение Выражение, значение которого должно быть возвращено. Если он опущен, вместо него возвращается undefined. Описание Когда оператор return используется в теле функции, выполнение функции останавливается. Если указано, заданное значение возвращается вызывающей функции…

Подробнее »

Как определить, какой из шрифтов использовался на веб-странице?

Как определить, какой шрифт использовался

Предположим, у меня есть следующее правило CSS на моей странице: body { font-family: Calibri, Trebuchet MS, Helvetica, sans-serif; } Как я могу определить, какой из определенных шрифтов использовался в браузере пользователя? Для людей, которым интересно, почему я хочу это сделать, потому что шрифт, который я обнаруживаю, содержит глифы, недоступные в других шрифтах. Если у пользователя нет шрифта , я хочу, чтобы он отображал ссылку, предлагающую пользователю загрузить этот шрифт (чтобы они могли использовать мое веб-приложение с правильным шрифтом). В настоящее время я показываю ссылку для загрузки шрифта для всех пользователей. Я хочу…

Подробнее »

Even or Odd (Четное или нечетное) | JavaScript (решено) | codewars

Even or Odd (Четное или нечетное) - JavaScript - codewars

Создайте функцию, которая принимает целое число в качестве аргумента и возвращает «Четное» для четных чисел или «Нечетное» для нечетных чисел. Решение function even_or_odd(number) { return number % 2 ? "Odd" : "Even"; } Четные числа Любое целое число, которое можно разделить ровно на 2, является четным числом . Последняя цифра 0, 2, 4, 6 или 8. Пример: −24, 0, 6 и 38 — все четные числа Нечетные числа Любое целое число, которое нельзя разделить точно на 2, является нечетным…

Подробнее »