输入类型=“日期”在某些浏览器中不起作用

时间:2017-02-25 03:53:42

标签: asp.net html5 webforms browser-support

我有一个ASP.NET Web表单页面,我在代码隐藏中设置输入值(type =“date”),它在IE 11和Firefox 51中正确显示,但在Chrome 56中和Opera 43一样,它只显示mm / dd / yyyy占位符。以下是我的代码。

ASPX ......

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Test Page</title>
    <link rel="stylesheet" type="text/css" href="../Content/bootstrap.css" />
    <link rel="stylesheet" type="text/css" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" />
    <link rel="stylesheet" type="text/css" href="../Content/formValidation.min.css" />

    <script type="text/javascript" src="../Scripts/jquery-2.2.3.min.js"></script>
    <script type="text/javascript" src="../Scripts/jquery-ui-1.11.4.min.js"></script>
    <script type="text/javascript" src="../Scripts/bootstrap.min.js"></script>
    <script type="text/javascript" src="//momentjs.com/downloads/moment.min.js"></script>
    <script type="text/javascript" src="../Scripts/formValidation.popular.js"></script>
    <script type="text/javascript" src="../Scripts/framework/bootstrap.js"></script>
    <script type="text/javascript" src="../Scripts/bootbox.min.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <label for="txtChildDOB1" class="control-label col-xs-1">DOB *</label>
        <div class="col-xs-1">
            <input type="date" class="form-control" style="position: absolute; z-index: 999" id="txtChildDOB1" name="txtChildDOB1" value="" runat="server" />
        </div>
    </div>
    </form>
</body>

代码隐藏......

        protected void Page_Load(object sender, EventArgs e)
    {
        this.txtChildDOB1.Value = new DateTime(2002, 3, 19).ToShortDateString();
    }

1 个答案:

答案 0 :(得分:0)

在回答您的问题之前。 asp.net中有两种输入日期,server sideclient side
在客户端,输入日期是这样的:

<input type="date" id="datePicker" class="form-control" runat="server" />

在服务器端,输入日期如下:

<asp:TextBox TextMode="Date" ID="datePicker" class="form-control" runat="server" ></asp:TextBox>

您可以同时使用两者,但在此之前,您需要准确地设置您想要输入日期的时间。
输入日期仅接受以下格式类型yyyy-MM-dddd-MM-yyyy
您必须选择-作为日期分隔符,当然要选择年份的4位数字,月份的2位数字和日期的2位数字。
为了澄清我的答案,我在这里写了代码:

string makeDate = DateTime.Now.ToString("yyyy") +
            "-" + DateTime.Now.ToString("MM") +
            "-" + DateTime.Now.ToString("dd");

或者在自定义日期中,您可以使用以下方法:

public static string makeDate8(DateTime dt)
{
    string date = dt.Year.ToString().PadLeft(4,'0') + "-" + dt.Month.ToString().PadLeft(2, '0') + "-" + dt.Day.ToString().PadLeft(2, '0');
    return date;
}

现在您可以像这样设置输入值:
在客户端:

datePicker.Value = today;

在服务器端:
datePicker.Text= today;