Я работаю над устаревшим веб-приложением, написанным на 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, чтобы очистить эти поля, введенное мной значение никогда не попадает на сервер.