只读文本框时无法获取文本?

时间:2013-10-24 11:44:51

标签: c# jquery asp.net

我有一个文本框

<asp:textbox runat="server" id="checkIn" ClientIDMode="Static" ReadOnly="true">
</asp:textbox>

文本框中的文本通过Jquery DatePicker输入。在后面的一些代码中,我正在从这个文本框中获取文本。

string x=checkIn.Text;

为什么我不能从文本框中提取输入的日期?我猜这是因为它是只读的,因为当我删除它时它有效吗?

任何人都可以帮助我吗?

9 个答案:

答案 0 :(得分:9)

在ASP.Net中,如果更改了readonly值,它将恢复为回发上的原始值。

但是,您可以使用wrokaround,而不是以声明方式指定readonly,将其指定为代码隐藏中的属性。即。

而不是

<asp:textbox runat="server" id="checkIn" ReadOnly="true"...

应用这是代码隐藏

checkIn.Attributes.Add("readonly", "readonly");

但是,视图状态仍然可能不适用于此。

更多信息:

HTML中的readonlydisabled控件之间存在细微差别。 disabled将不会随表单一起提交,readonly将会提交。从字面上看,readonly只是只读,但disabled实际上是已禁用

来自W3C:http://www.w3.org/TR/html401/interact/forms.html#h-17.12

请参阅第17.13.2节“17.13表格提交下的成功控制”)

但是,如果控件被声明为,即在init期间设置了属性,则ASP.Net会在回发时恢复为原始值。这就是为什么稍后设置属性(在页面加载中)不会影响此行为的原因。

答案 1 :(得分:2)

使用HTML输入标记而不是asp:textbox

使用此: -

<input type="text" readonly="readonly" runat="server" id="checkIn" clientidmode="Static"/>

而不是: -

<asp:textbox runat="server" id="checkIn" ClientIDMode="Static" ReadOnly="true"></asp:textbox>

答案 2 :(得分:2)

将以下代码写入代码隐藏文件,asp.net .cs或类文件以及.vb文件中的vb。

您必须在页面加载事件中写入它,具体取决于您在回发之前或之后是否需要它或不论两者都... ...

textbox.Attributes.Add(“readonly”,“readonly”);

答案 3 :(得分:1)

在通过jQuery或Java-Script发布值之前,尝试将readonly设置为false。它应该工作。

 $('#tbox').removeAttr('readonly');

假设我有asp:button然后在客户端点击我需要调用一个从文本框中删除只读属性的函数。

<asp:Button ID="MessageButton" runat="server" Text="Hellow"
     OnClientClick="return changeAttribute()" />
<asp:textbox runat="server" id="checkIn" ClientIDMode="Static" ReadOnly="true">
</asp:textbox>

并在javascript中更改属性函数如下

function changeAttribute()
{
      $('#checkIn').removeAttr('readonly');
      return true;
}

答案 4 :(得分:1)

您也可以在asp:TextBox控件中关闭readOnly属性并使用jquery $('#textbox')。attr('readOnly','readOnly')。

答案 5 :(得分:0)

在asp.cs页面中应用:AttrName.Attributes.Add(&#34; readonly&#34;,&#34; readonly&#34;);

答案 6 :(得分:0)

请使用:

Request.Form [txtText.UniqueID]

答案 7 :(得分:0)

如果只读文本框在表单中,则实际上可以得到它的值。

var text = Page.Request.Form[TextBox.UniqueID];

很抱歉,此回复已晚了几年!

答案 8 :(得分:0)

我在jQuery上也遇到了同样的问题,但是有一个技巧:

 $('#txtBoxID').removeAttr('readonly');
/// Do your stuff here..

 $('#txtBoxID').add('readonly');

;)