在 c# 中使用 javascript 日历设置值后如何获取文本框的文本?
Posted
技术标签:
【中文标题】在 c# 中使用 javascript 日历设置值后如何获取文本框的文本?【英文标题】:How to get the text of a textbox after setting the value using javascript calendar in c#? 【发布时间】:2012-07-09 10:18:45 【问题描述】:我有一个asp:TextBox 控件和一个与之关联的javascript 日历函数。
<asp:TextBox ID="txtFromDate" ReadOnly="true" runat="server" style="font-family:Verdana; font-size:11px;"></asp:TextBox>
<a href="javascript: void(0);" onmouseover="if (timeoutId) clearTimeout(timeoutId);window.status='Show Calendar';return true;" onmouseout="if (timeoutDelay) calendarTimeout();window.status='';" onclick="g_Calendar.show(event,'formAddCosting.txtFromDate',false); return false;">
<img src="Images/calendar.gif" name="calendarFromDate" border="0" /></a>
我可以从 javascript 日历中选择日期并将其显示在文本框中。但是,当我尝试检查文本框的日期以在后面的代码中进行验证时,dtFrom = Convert.ToDateTime(txtFromDate.Text.ToString());
在调试期间显示""
。如何从后面的代码中获取文本框的值?我正在使用 VB2005、ASP.Net2.0 和 C#。提前致谢。
【问题讨论】:
@Tim Schmelter,我在这里使用 sFromDate = Request.Form["txtFromDate"].ToString(); 来做到这一点,sFromDate 是一个字符串变量。但我不确定,为什么我需要使用 Request.Form 因为文本框已经是服务器控件?顺便说一句,谢谢你的帮助。 :) @Tim Schmelter,还有一件事(与问题无关),如何在 cmets 中标记代码行? 【参考方案1】:采取以下步骤从 TextBox 中获取价值:
从您的文本框中删除 ReadOnly="false"
属性,因为这是您无法获取文本框值的唯一原因。原因是使用 ReadOnly="true" 或 Enabled="false" 时,您的 texytbox 的值不会保留在视图状态中。
要在年龄加载函数的文件后面的代码中使文本框只读,请编写以下代码:
txtFromDate.Attributes.Add("readonly","readonly");
【讨论】:
【参考方案2】:那是因为你的 TextBox
是只读的:http://www.codeproject.com/Articles/33649/ViewState-and-Readonly-Property-of-Textbox
因此要么启用并验证它(如果用户想手动输入日期)或使用HiddenField
来存储日历中的日期。
我会推荐第一个选项,因为最好不要像对待孩子一样对待用户。
【讨论】:
以上是关于在 c# 中使用 javascript 日历设置值后如何获取文本框的文本?的主要内容,如果未能解决你的问题,请参考以下文章
DatePicker 数据绑定将默认值设置为 1/1/0001 WPF c#