文本框值未更新?

时间:2011-09-13 17:16:13

标签: jquery asp.net textbox

我有一个禁用的asp.net文本框,我正在使用JQuery在客户端设置文本框的值。

$('[id$=txtCity]').val('Naperville');

但问题是当我试图保存数据时。如果我说txtCity.Text它没有给我我在客户端设置的值。

文本框已禁用,在使用JQuery设置值后,我看到客户端文本框中反映的值。但我不确定为什么它没有反映在服务器端。

我发现带有已禁用的TextBox 将无法提交并在回发时显示该表单。如果这是真的,我如何提交这些值并在后面的代码中在服务器端获取。

请帮忙。感谢并感谢您的反馈。

2 个答案:

答案 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字段也可能是一个可行的解决方案。

<小时/> 编辑:只需阅读你对Knix答案的评论,这听起来像是在发布之前动态删除已禁用的属性。