2010-05-04 109 views

回答

0

居然还有覆盖在非标准的ASP type属性没有简单的方法:文本框。 可以simly使用输入元素

下面是一个例子

<input type="date" id="Input1" runat="server" /> 

让我知道,如果它可以帮助...

+0

设计者不允许这种类型! – 2010-05-04 20:14:08

+0

不,不幸的是,它会引发编译错误 – 2010-05-04 20:18:00

+2

是的,你是对的。另一种方法是继承TextBox并重写AddAttributesToRender(HtmlTextWriter writer)方法。 writer.AddAttribute(HtmlTextWriterAttribute.Type,“date”); – 2010-05-04 20:31:39

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'); 
     }; 
    } 
} 
最后
<script type="text/javascript" src="setNewType.js"></script>

,添加类似下面的背后pageLoad的代码(:

现在加入这行到你的aspx页面的标签后(改变,无论你称它上面的文件名!)我用VB这里):

aspTxtBxId.Attributes("xtype") = "tel" ' or whatever you want it to be 

上面的重要组成部分,是属性(“的xtype”),因为它把属性的xtype在渲染HTML的“文本框”,它的JavaScript,然后找到。并用来替换原来的“type”属性。

祝你好运!
FJF

+0

我记得以前的IE版本(不确定IE9)不允许通过javascript改变输入类型。 – 2012-02-06 13:21:20

1

通过构建自定义控件,我走了建立自己的一套html5 inputs的路线。我得到iPad和iPhone上的自定义键盘以及真正的asp.net控件的回发编码。它适用于我的内部项目,所以我决定授权整套软件来为其他人节省时间和麻烦。

希望这会有所帮助!

29

没有为.NET Framework 4的更新,它允许你指定类型属性

http://support.microsoft.com/kb/2468871

feature 3一路下跌的页面

特点3

的新语法允许您定义 TextBox控件是HTML5兼容 。例如,下面的 代码定义了一个TextBox控件是 HTML5兼容:

<asp:TextBox runat="server" type="some-HTML5-type" /> 
+3

这是个好消息,但并非所有人都可以将我们的旧版应用升级到.NET 4. – styfle 2012-09-25 19:12:00

+0

这不适用于IE10 – JoshYates1980 2017-03-15 18:09:26

6

如果你不介意的子类,你可以通过overidding的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

我知道做到这一点这个问题很旧,但我在Web Forms应用程序中遇到了同样的问题。您需要使用的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

+0

这是正确的答案。我厌倦了这些警告信息,我讨厌禁用警告。我不知道为什么我没有考虑textmode - 当然MS不能使用本地属性名称。 – Ripside 2016-11-17 17:50:37