我有一个Web表单,其中包含许多用于操作DOM的JavaScript功能。 这是通过使用AJAX调用一个服务来实现的,该服务将返回给我任何我必须做的事情,例如隐藏元素,级联下拉,删除和插入新项目等等。
除了一个特定功能外,一切都按预期工作。此函数仅根据我的AJAX调用返回的内容禁用和设置select元素中的默认值。例如,假设我从以下选择中选择了“foo”并保存了记录:
<select id="mySelect2">
<option value="0">Default</option>
<option value="foo">Foo</option>
<option value="another_foo">Foo 2</option>
</select>
大!现在我已经更改了我的Web表单中触发了我的AJAX调用的其他元素。返回的数据告诉我应该选择Default并禁用select元素。这很好用。但是,当我再次保存记录并在DB中验证时,默认值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
});
根据返回的数据处理select元素:
function OnSuccess(data, textStatus) {
if (data.d.DisableMySelect2){
$('#mySelect2').val('0');
$('#mySelect2').attr('disabled', 'disabled');
}
}
为什么会这样?
修改
进一步的调查表明,我的网页表单没有正确解除更改后的值,但是当我去Request.Form["mySelect2"]
时,我实际上可以看到更新的值,所以显然客户端没有任何问题。
答案 0 :(得分:2)
我认为这种情况正在发生,因为disabled的表单元素未随表单一起提交。
您可能希望通过AJAX调用处理表单提交,或使用隐藏的输入来存储禁用的SELECT元素的所选选项的值。