У меня есть веб-форма, которая содержит множество функций 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").
Если вам интересно, я использовал следующий код для этого:
Связывает вызов AJAX
$('myElement').change(GetData);
Метод GetData
$.ajax({
type: 'POST',
url: 'myUrl',
data: "{'id':'" + myIdFromMyElement + "'"}",
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: OnSuccess,
error: OnError
});
Манипулировать элементом выбора в соответствии с возвращенными данными:
function OnSuccess(data, textStatus) {
if (data.d.DisableMySelect2){
$('#mySelect2').val('0');
$('#mySelect2').attr('disabled', 'disabled');
}
}
Почему это происходит?
EDIT:
Дальнейшие исследования показали, что моя веб-форма не правильно связывает измененное значение, но когда я иду Request.Form["mySelect2"]
, я действительно вижу обновленное значение, так что, очевидно, нет ничего плохого в клиентской стороне вещей.