web-dev-qa-db-ja.com

html5入力type = "date"のasp.TextBoxをレンダリングします

以前に聞いたことがあるかどうかはわかりませんが、見つけることもできませんでした。

Asp:TextBoxによってレンダリングされる入力テキストのタイプを制御することは可能ですか? <input type="date">に変更したいのですが

どんな提案やコメントも大歓迎です、ありがとう

Type属性を指定できる.NETFramework4の更新があります

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

見る feature 3ページのずっと下

特徴3

新しい構文を使用すると、HTML5互換のTextBoxコントロールを定義できます。たとえば、次のコードは、HTML5互換のTextBoxコントロールを定義しています。

<asp:TextBox runat="server" type="some-HTML5-type" />
30
Chris Diver

サブクラス化を気にしない場合は、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);
    }
}
6
Colin

これが私がそれをした方法です...それが役立つことを願っています...

「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');
        };
    }
}

次に、この行をaspxページのbodyタグの後に追加します(ファイル名を上記の名前に変更してください!):
<script type="text/javascript" src="setNewType.js"></script>

最後に、PageLoadの背後にあるコードに次のようなものを追加します(ここではVB)を使用しました)。

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

上記の重要な部分は、Attributes。( "xtype")です。これは、属性XTYPEを「テキストボックス」のレンダリングされたhtmlに配置するためです。次に、javascriptは、元の「type」属性を見つけて置き換えるために使用します。

幸運を!
FJF

3

この質問は古いことは知っていますが、Webフォームアプリケーションでも同じ問題が発生していました。 TextModeを使用する必要があります

ドキュメントには次のように記載されていますが

TextModeプロパティを使用して、TextBoxコントロールの表示方法を指定します。 3つの一般的なオプションは、単一行、複数行、またはパスワードのテキストボックスです。

Visual Studio 2012/2013に組み込まれているhtml5、日付、時刻、数値などを使用することもできます。

https://msdn.Microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.textmode(v = vs.110).aspx

2
maxandcoffee

カスタムコントロールを作成して、独自の html5入力 のセットを作成するルートをたどりました。 iPadとiPhoneのカスタムキーボードに加えて、真のasp.netコントロールのポストバックコーディングを取得します。それは私の社内プロジェクトで機能したので、他の人が最初からそれを行う時間と手間を省くために、スイート全体のライセンスを取得することにしました。

お役に立てれば!

1
ja928

実際には、標準のasp:TextBoxのtype属性をオーバーライドする簡単な方法はありません。入力要素を簡単に使用できます

これが例です

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

それが役立つかどうか教えてください...

0
BALKANGraph