我必须使用jQuery启用和禁用文本框,这可以正常工作。禁用的文本框中包含值。但我面临的问题是,禁用的文本框没有将值传递给服务器。当我使用jQuery启用它时,我看到代码后面的文本框值(调试模式)。任何有关这种情况发生的想法或从代码背后的禁用文本框中获取价值的替代方法。
HTML:
<asp:TextBox ID="txtUniqueNo" runat="server" onkeyup = "OnChange(this)" required/>
我用来在视图页面中禁用的Javascript
var inputBox = $("#<%=txtUniqueNo.ClientID%>");
inputBox.prop('disabled', true);
由于
答案 0 :(得分:11)
原因很简单,由于网络浏览器提交限制政策,已禁用输入值未提交给服务器。
W3 规范指出已禁用的输入标记被视为无效,不应提交。
相反,请使用readonly
属性:
<input type="text" readonly />
或者使用jQuery:
$("#<%=txtUniqueNo.ClientID%>").attr('readonly', 'readonly');
更新:
了解如何删除readonly
属性(如果需要):http://jsfiddle.net/ynevet/84HrM/
答案 1 :(得分:3)
如果您已禁用文本框,则不会回发到服务器。
将标签设置为文本框的值,并将隐藏字段设置为该值。
textbox
(或启用textbox
并最后发送值disable
textbox
)textbox
值存储到控件(span
)应该隐藏的任何其他控件,并获取隐藏控件(span
)值以发送服务器端&#39; < / LI>
Hidden field
作为商店文本框值,将值发送到服务器端... readonly
属性而不是启用和禁用属性答案 2 :(得分:0)
如果要禁用,请尝试在样式中使用disabled,而不是使用Enable属性,并在要启用时更改属性值。
答案 3 :(得分:0)
var inputBox = $("#<%=txtUniqueNo.ClientID%>");
inputBox.prop('readonly', true);
或
inputBox.prop('readonly', false);
现在服务器可以读取文本框的值
答案 4 :(得分:0)
在通过javascript / jquery提交之前启用,然后再次从服务器禁用。