为什么在aspx页面的代码隐藏中没有检测到JQuery datepicker值?

时间:2011-09-16 10:38:29

标签: asp.net jquery-ui sharepoint-2010

我有一个应用程序页面(在SharePoint应用程序中,如果这是相关的)注册了JQuery datepicker小部件:

<script type="text/javascript">
    // Create JQuery calendar
    $(document).ready(function () {
        $('#<%=TextBoxDato.ClientID %>').datepicker({ altField: "#<%=TextBoxDato.ClientID %>",
            altFormat: 'dd/mm/yy'
        });

        $.datepicker.setDefaults($.datepicker.regional['no']);
    });
</script>


<asp:TextBox ID="TextBoxDato" runat="server" />
<asp:Button ID="ButtonSubmit" runat="server" text="Do it" />

在代码隐藏中,在页面加载时,我添加了一个小的客户端脚本来验证文件名,然后用今天的日期填充文本框:

// Add client-side script to check for existing file names
ButtonSubmit.Attributes.Add("onclick", "javascript:return checkFile()");

// Fill date box with today's date
DateTime now = DateTime.Now;

...然后,在单击ButtonSubmit的事件处理程序中,我尝试读出用户选择的值:

DateTime now = DateTime.Parse(TextBoxDato.Text, new CultureInfo("fr-FR"));

我的问题是,当点击ButtonSubmit时,用户选择的日期似乎在代码隐藏中被忽略 - “now”的值始终是今天的日期。运行调试器时,checkFilename()JavaScript方法可以访问选择的日期,但代码隐藏不是。有谁看到我做错了什么?

2 个答案:

答案 0 :(得分:4)

日期TextBox是否只读?如果是,ASP.NET将忽略新值。

要解决此问题,您可以通过JavaScript而不是通过ASP.NET来读取文本框。

答案 1 :(得分:1)

你说

  

在代码隐藏中,在页面加载时,我添加了一个小的客户端脚本   验证文件名,然后用今天填充文本框   日期:

您要设置TextBox值,并在页面加载时显示当前日期。在Page_Load方法

上添加一些额外的代码

VB

If Not Page.IsPostBack Then
    '' assign the textbox value here
End If

C#

if (!Page.IsPosBack) {
     // assign the textbox value here
}

否则,每次单击该按钮时,该值都将重置为页面加载值