C# asp.net文本不';禁用时不发送值

C# asp.net文本不';禁用时不发送值,c#,asp.net,C#,Asp.net,我必须使用jQuery启用和禁用文本框,这很好。禁用的文本框中有值。但我面临的问题是,禁用的文本框不会将值传递给服务器。当我使用jQuery启用它时,我会在代码隐藏(调试模式)中看到文本框值。任何关于为什么会发生这种情况的想法,或者从代码隐藏中禁用的文本框中获取值的替代方法 HTML: 我用来在视图页面中禁用的Javascript var inputBox = $("#<%=txtUniqueNo.ClientID%>"); inputBox.prop('disabled', t

我必须使用jQuery启用和禁用文本框,这很好。禁用的文本框中有值。但我面临的问题是,禁用的文本框不会将值传递给服务器。当我使用jQuery启用它时,我会在代码隐藏(调试模式)中看到文本框值。任何关于为什么会发生这种情况的想法,或者从代码隐藏中禁用的文本框中获取值的替代方法

HTML:


我用来在视图页面中禁用的Javascript

var inputBox = $("#<%=txtUniqueNo.ClientID%>");
inputBox.prop('disabled', true);
var-inputBox=$(“#”);
inputBox.prop('disabled',true);
谢谢

如果禁用了文本框,它将不会发回服务器

将标签设置为文本框的值,并将隐藏字段设置为该值

我们将用很少的方法来做这件事
  • 在发送到服务器端的值之后禁用
    文本框
    (或者启用
    文本框
    ,最后发送值
    禁用
    文本框

  • 文本框
    值存储到任何其他控件,控件(
    span
    )应隐藏,并获取隐藏控件(
    span
    )值以发送服务器端'

  • 您可以使用
    隐藏字段
    存储文本框值,以便将值发送到服务器端

  • 或者使用
    readonly
    属性,而不是启用和禁用属性
原因很简单,由于web浏览器提交限制策略,禁用的输入值不会提交到服务器

W3规范指出,禁用的输入标记被视为无效,不应提交

相反,请使用
readonly
属性:

<input type="text" readonly />

或者使用jQuery:

$("#<%=txtUniqueNo.ClientID%>").attr('readonly', 'readonly');
$(“#”)attr('readonly','readonly');
更新:


查看如何在需要时删除
只读属性:

如果要禁用,请尝试在样式中使用disabled,如果要启用,请更改属性值,而不要使用Enable属性

var inputBox = $("#<%=txtUniqueNo.ClientID%>");
inputBox.prop('readonly', true);

现在,服务器可以在通过javascript/jquery提交之前读取文本框的值,然后再次从服务器中禁用。

谢谢,这样做了。。我在代码隐藏中获得了价值,如何从文本框中删除属性readonly。。我使用的是inputBox.removeAttr('readonly');这是否正确?要同时更改背景,如在禁用模式下,请添加:txtBox.style.backgroundColor=“#EBEBE4”;谢谢readonly属性完成了我的工作,尽管您的信息很有用,但Dod upvoteNote:非常简短的答案和/或回复到海报的问题可能应该是评论。你只需要50个代表点就可以在一个问题下发表评论-你能把这个移到那里吗?
var inputBox = $("#<%=txtUniqueNo.ClientID%>");
inputBox.prop('readonly', true);
inputBox.prop('readonly', false);