Элементы клиента не обновляются при отправке формы - PullRequest
0 голосов
/ 22 июня 2009

У меня есть веб-форма, которая содержит множество функций JavaScript для управления DOM. Это достигается с помощью AJAX для вызова службы, которая возвращает мне все, что мне нужно сделать, например, скрытие элементов, каскадные выпадающие списки, удаление и вставку новых элементов в выбор и т. Д.

Все работает, как и ожидалось, кроме одной конкретной функции. Эта функция только отключает и устанавливает значение по умолчанию в элементе select в зависимости от того, что вернул мой вызов AJAX. Например, допустим, я выбрал «foo» из следующего списка и сохранил запись:

<select id="mySelect2">
  <option value="0">Default</option>
  <option value="foo">Foo</option>
  <option value="another_foo">Foo 2</option>
</select>

Отлично! Теперь я изменил другой элемент в моей веб-форме, который вызвал мой вызов AJAX. Возвращенные данные говорят мне, что я должен выбрать Default и отключить элемент select. Это работает просто отлично. Но, когда я снова сохраняю запись и проверяю ее в БД, значение по умолчанию 0 в этом случае не сохраняется. Запись остается с предыдущим выбранным элементом ("foo").

Если вам интересно, я использовал следующий код для этого:

  1. Связывает вызов AJAX

    $('myElement').change(GetData);
    
  2. Метод GetData

    $.ajax({
        type: 'POST',
        url: 'myUrl',
        data: "{'id':'" + myIdFromMyElement + "'"}",
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        success: OnSuccess,
        error: OnError
    });
    
  3. Манипулировать элементом выбора в соответствии с возвращенными данными:

    function OnSuccess(data, textStatus) { 
        if (data.d.DisableMySelect2){
            $('#mySelect2').val('0');
            $('#mySelect2').attr('disabled', 'disabled');
        }
    }
    

Почему это происходит?

EDIT:

Дальнейшие исследования показали, что моя веб-форма не правильно связывает измененное значение, но когда я иду Request.Form["mySelect2"], я действительно вижу обновленное значение, так что, очевидно, нет ничего плохого в клиентской стороне вещей.

1 Ответ

2 голосов
/ 22 июня 2009

Я думаю, что это происходит потому, что элементы формы, которые отключены , не отправляются вместе с формой.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...