Устаревший ASP.NET 1.1 с проблемой интеграции с jQuery - PullRequest
0 голосов
/ 02 марта 2009

Я работаю над устаревшим веб-приложением, написанным на VB.NET для ASP.NET 1.1. Одна конкретная страница имеет форму с несколькими полями. В ответ на изменение значения раскрывающегося списка, я очищаю несколько полей, сбрасываю количество раскрывающихся списков для первого параметра и устанавливаю их все «отключенными» в пользовательском интерфейсе. Для этого я использую jQuery. Я добавляю класс css ко всем этим полям, и затем мой селектор jQuery выглядит примерно так: $ ("*. My-css-class"). Вот пример кода для объяснения.

var fields = $("*.fields");
if( some_condition )
{
fields.val("");
fields.attr("selectedIndex", 0);
fields.attr("disabled", "disabled");
}

Пользовательский интерфейс обновляется, как и ожидалось, в ответ на приведенный выше js-код, но когда я отправляю страницу в ответ на нажатие кнопки, исходные значения все еще сохраняются на стороне сервера, связанной с этими элементами управления. Например, txtSomething - это одно из полей с полем класса css (поэтому оно будет выбрано с помощью вышеуказанного селектора jQuery). Пользователь вводит «1234» в этом текстовом поле и отправляет форму. Либо та же страница отправляется обратно на себя, сохраняя свои значения, или я возвращаюсь на эту страницу и предварительно заполняю значения на стороне сервера (например, пользователь нажимает кнопку «Изменить» на странице сводки), поэтому элемент управления txtSomething инициализируется на клиент со значением «1234». Мой код JQuery очищает значение, насколько пользователь видит его в пользовательском интерфейсе, а затем пользователь нажимает кнопку отправки. Если я опрошу значение с помощью селектора jQuery, значение этого поля будет пустой строкой. Когда страница отправляется обратно, и я перебираю код (или что-то делаю со значением этого элемента управления), это все равно «1234».

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

1 Ответ

1 голос
/ 02 марта 2009

зачем вам нужно отключать эти поля? Отключение элементов управления может привести к тому, что они не будут публиковать значения на сервере ... по крайней мере, так происходит, когда элемент управления asp.net отключен на стороне сервера.

Обновление 1: не может не сомневаться в том, что это только на стороне сервера, поэтому я посмотрел его :) http://www.w3.org/TR/html401/interact/forms.html#h-17.12.1 ... "В этом примере элемент INPUT отключен. Поэтому он не может получать пользовательский ввод, и его значение не будет отправлено с формой. ", поэтому я был прав, даже если отключить его на стороне клиента, он не будет публиковать значение

...