asp.net中文本框上的Datepicker不起作用

时间:2015-04-21 13:25:29

标签: asp.net textbox datepicker

这是我的日期选择器的JS。

<script type="text/javascript">
    $(document).ready(function () {
        $(function () {
            $("#txtage").datepicker();
        });
    });
</script>

这是我的asp服务器端控件。

<asp:TextBox ID="txtage" runat="server" ReadOnly="true"></asp:TextBox>

我希望当用户到达此文本框时,应打开一个日历,他们可以从中选择年龄,该日期应显示在此文本框中。

请告诉我该怎么做?

4 个答案:

答案 0 :(得分:3)

你有几个问题。您的ID不匹配。您在一个地方使用txtage,在另一个地方使用txtcity。这是复制粘贴错误吗?

如果您使用嵌套的模板化控件(或母版页),则客户端上的ID可能与服务器端的ID不同。您可以更改客户端ID的生成方式,如下所示:

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" />
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css" />

<script type="text/javascript">
    $(document).ready(function () {
        $(function () {
            $("#txtage").datepicker();
        });
    });
</script>
<td><asp:TextBox ID="txtage" runat="server" ClientIdMode="static" /></td>

您还没有显示您的代码,以确保在页面上加载jQuery和jQuery UI。

答案 1 :(得分:1)

我刚检查过,这个完美无缺:

<强> Default.aspx的

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="testDatePicker.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" />
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>
    <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
    <link rel="stylesheet" href="/resources/demos/style.css" />
    <script src="script.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox runat="server" ID="myTextBox"></asp:TextBox>
    </div>
    </form>
</body>
</html>

<强>的script.js

$(function() {
    $("#myTextBox").datepicker();
});

我建议您删除ReadOnly属性,因为datepicker会尝试修改textBox但不太确定。

答案 2 :(得分:0)

只需添加.ClientID文本框ID,如下所示。

<强> JS

<link rel="stylesheet" href="http://code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>

<script type="text/javascript">
$(document).ready(function () {
    $(function () {
        $('#<%=txtage.ClientID%>').datepicker();
    });
});

答案 3 :(得分:0)

Asp.Net的属性为TextMode,该属性会加载一个日历,该日历必须等于"Date"-TextMode="Date"

示例:

<asp:TextBox ID="txtage" TextMode="Date" runat="server" ReadOnly="true"></asp:TextBox>