我有一个禁用的asp.net文本框,我正在使用JQuery在客户端设置文本框的值。
$('[id$=txtCity]').val('Naperville');
但问题是当我试图保存数据时。如果我说txtCity.Text它没有给我我在客户端设置的值。
文本框已禁用,在使用JQuery设置值后,我看到客户端文本框中反映的值。但我不确定为什么它没有反映在服务器端。
我发现带有已禁用的TextBox 将无法提交并在回发时显示该表单。如果这是真的,我如何提交这些值并在后面的代码中在服务器端获取。
请帮忙。感谢并感谢您的反馈。
答案 0 :(得分:3)
我认为禁用的字段不会被发布。
也许您应该尝试readonly
字段:http://www.w3schools.com/tags/att_input_readonly.asp
<input id="firstName" name="firstName" value="hello world" READONLY>
您始终可以使用CSS使readonly字段显示为disabled =)
编辑:
好的..如果你不能做只读,那么使用AJAX发布和直接传递数据怎么样,因为你说你可以在客户端访问它:
$.ajax({
url: "yourForm.php", // sorry I used PHP in this example
type: "POST",
data: { txtCity : $('#txtCity').val() },
success: function(msg){
alert(msg);
}
}
)
EDIT2:
如果在服务器端填充隐藏字段并使用该值,那么如何使用readonly字段或使用AJAX呢?
$('#hiddenField').val('Naperville');
由于该字段是隐藏的,因此用户不会知道差异=)
EDIT3:
OP使用正确的服务器端语法为readonly输入工作:
TextBox1.Attributes.Add("readonly","readonly")
答案 1 :(得分:3)
您可以在发布前始终“取消禁用”该字段。如,
$('form').submit(function() {
$(this).find(':input:disabled').removeAttr('disabled');
});
当然,根据Knix的回答,使用readonly
字段也可能是一个可行的解决方案。