2010-05-04 62 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