将值设置为从代码隐藏中输入 type="date"

Posted

技术标签:

【中文标题】将值设置为从代码隐藏中输入 type="date"【英文标题】:Set value to input type="date" from codebehind 【发布时间】:2017-09-18 04:04:59 【问题描述】:

我想从 ASP.NET Web 应用程序中的 C# 代码隐藏为我的 html 标记 input type="date" 赋值。页面加载后,该值不可见,但在 chrome 开发工具中我可以看到该值:

ASPX:

<input type="date" runat="server" id="date_datumPrispetja" value="dd. MM. yyyy" />

代码隐藏:

string date = myDate.ToString("dd. MM. yyyy"); //value of date: "09. 04. 2017";
date_datumPrispetja.Value = date;

这是否可能,将代码隐藏中的值分配给这个 HTML5 元素?


编辑:

比较datetimedate 输入类型。 C#:

date_datumPrispetja.Value = DateTime.Now.ToString("dd. MM. yyyy");
hi.Value = DateTime.Now.ToString("dd. MM. yyyy");

ASPX:

<input type="date"  runat="server" id="date_datumPrispetja" value="dd. MM. yyyy"/>
<br />
<input type="datetime" runat="server" id="hi" value="dd. MM. yyyy" />

结果:

【问题讨论】:

【参考方案1】:

这对我有用。

TextBox.Text = Convert.ToDateTime('01-01-2020').Date.ToString("yyyy-MM-dd");

【讨论】:

【参考方案2】:

这对我有用:

txtFechaOtorgamiento.Text = Format(servicio.FechaOtorgamiento, "yyyy-MM-dd");

【讨论】:

【参考方案3】:

Mobile Safari、Firefox 和 Chromium 仅接受格式的日期值

<input type="date" value="2017-04-27">

并以本地化格式打印日期。如果他们获得本地化格式作为输入(例如“27.04.2017”),他们只会打印占位符。

然而 Safari 接受

<input type="date" value="27.04.2017">

另一方面,如果 Safari 获取输入格式“2017-04-27”,它将以非本地化形式打印此值。

在浏览器的 DOM 中,输入值存储属性 defaultValue(所有浏览器为 true),属性 value 为空(Safari 不为 true)。

我对这种混乱的解决方法是一些 javascript

$(function () 
    var datefields = $('.TTMMJJ')
    for (i = 0; i < datefields.length; i++) 
        datefields[i].type = "date";
        var defaultVal = datefields[i].defaultValue;
        var val = datefields[i].value;
        if (defaultVal.length > 0 && val.length == 0) 
            var darr = defaultVal.split(".");
            if (darr.length == 3) 
                var year = darr[2];
                var month = darr[1];
                var day = darr[0];
                if (year.length == 2) 
                    year = "20" + year;
                
                var s = year + '-' + month.padStart(2,0) + '-' + day.padStart(2,0);
                datefields[i].value = s;
            
        
    
);

注意

Date.parse("27.04.2017") 

适用于 Chromium,但不适用于 Firefox。

【讨论】:

【参考方案4】:

我觉得应该可以了,你把这段代码放在哪里了:

string date = myDate.ToString("dd. MM. yyyy"); //value of date: "09. 04. 2017";
date_datumPrispetja.Value = date;

Page_Load()?

我的测试代码如下:

protected void Page_Load(object sender, EventArgs e)
    
        hi.Value = DateTime.Now.ToString("yyyy-MM-dd");
    

然后效果很好。

【讨论】:

你能告诉我你在你的aspx中的&lt;input&gt;元素定义吗? 当然。 我需要在同一输入中使用日期选择器,所以日期时间对我不起作用。 类型无关紧要。我将类型更改为日期并仍然获得当前的体验。 啊哈,我找到了根本原因。你应该使用:DateTime.Now.ToString("yyyy-MM-dd");而不是 DateTime.Now.ToString("dd.MM.yyyy");在 Page_Load。查看更多详情:***.com/questions/14212527/…

以上是关于将值设置为从代码隐藏中输入 type="date"的主要内容,如果未能解决你的问题,请参考以下文章

将值设置为 <input type="number" /> 中的货币

yii怎么设置文本框禁止输入,隐藏文本框

即使 col_type 设置为字符时,read_delim 也会将值转换为 sci 表示法

如何隐藏输入[type =“date”]鼠标悬停的两个箭头?

如何将值设置为小于 min 或大于 max 的输入?

JavaScript 将值发送到后端(隐藏的 html 输入或所有方式)