我不知道以前是否曾被问过,也找不到它。
是否可以控制由asp:TextBox呈现的输入文本的类型?我想将其更改为<input type="date">
欢迎任何建议或意见,谢谢
答案 0 :(得分:30)
.NET framework 4有一个更新,允许您指定类型属性
http://support.microsoft.com/kb/2468871。
请参阅页面上的feature 3
功能3
新语法允许您定义 TextBox控件是HTML5 兼容。例如,以下内容 代码定义了一个TextBox控件 HTML5兼容:
<asp:TextBox runat="server" type="some-HTML5-type" />
答案 1 :(得分:6)
如果您不介意子类化,可以通过覆盖AddAttributesToRender来实现此目的
public class DateTextbox : System.Web.UI.WebControls.TextBox
{
protected override void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)
{
writer.AddAttribute("type", "date");
base.AddAttributesToRender(writer);
}
}
答案 2 :(得分:3)
我是这样做的...希望它有所帮助...
将新项目添加到“JScript文件”类型的项目中,然后将此代码粘贴到:
var setNewType;
if (!setNewType) {
setNewType = window.onload = function() {
var a = document.getElementsByTagName('input');
for (var i = 0; i < a.length; i++) {
if (a[i].getAttribute('xtype')) {
a[i].setAttribute('type', a[i].getAttribute('xtype'));
a[i].removeAttribute('xtype');
};
}
}
现在在 body 标记之后将此行添加到您的aspx页面中(将文件名更改为您在上面调用的任何内容!):
<script type="text/javascript" src="setNewType.js"></script>
最后,在PageLoad后面的代码中添加如下内容(我在这里使用VB):
aspTxtBxId.Attributes("xtype") = "tel" ' or whatever you want it to be
上面的重要部分是 Attributes。(“xtype”),因为它将属性XTYPE放置在“textbox”的渲染html中,然后javascript会找到并用来替换原始的“类型”属性。
祝你好运!答案 3 :(得分:2)
我知道这个问题很老,但我在Web窗体应用程序中遇到了同样的问题。您需要使用TextMode
虽然文档说明了
使用TextMode属性指定TextBox控件的显示方式。三种常见选项是单行,多行或密码文本框。
您还可以使用Visual Studio 2012/2013中内置的html5,日期,时间,数字等。
https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.textmode(v=vs.110).aspx
答案 4 :(得分:1)
答案 5 :(得分:0)
实际上没有简单的方法来覆盖标准asp:TextBox中的type属性。 您只需使用输入元素
即可这是一个例子
<input type="date" id="Input1" runat="server" />
如果有帮助,请告诉我......