在 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","re​​adonly");

【讨论】:

【参考方案2】:

那是因为你的 TextBox 是只读的:http://www.codeproject.com/Articles/33649/ViewState-and-Readonly-Property-of-Textbox

因此要么启用并验证它(如果用户想手动输入日期)或使用HiddenField 来存储日历中的日期。

我会推荐第一个选项,因为最好不要像对待孩子一样对待用户。

【讨论】:

以上是关于在 c# 中使用 javascript 日历设置值后如何获取文本框的文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何用c#设置raddatepicker日期输入框

DatePicker 数据绑定将默认值设置为 1/1/0001 WPF c#

使用edit-text中提供的值设置日历类实例

关于用JAVASCRIPT做日历的问题!

如何使用 C# 从 Windows 10 日历中检索 UWP 中的约会

asp.net里面的javascript没有设置隐藏字段值