Render asp.TextBox для ввода типа html5="дата"

18

Я не знаю, было ли задано раньше, и не смог найти его.

Можно ли управлять типом входного текста, который отображается asp: TextBox? Я хотел бы изменить его на <input type="date">

любые предложения или комментарии приветствуются, спасибо

    
задан Jhonny D. Cano -Leftware- 04.05.2010 в 21:51
источник

6 ответов

30

Существует обновление для .NET framework 4, которое позволяет вам указать атрибут type

Ссылка .

См. feature 3 вниз по странице

  

Функция 3

     

Новый синтаксис позволяет определить   Элемент управления TextBox, который является HTML5   совместимы. Например, следующее   код определяет элемент управления TextBox, который   Совместимость с HTML5:

<asp:TextBox runat="server" type="some-HTML5-type" />
    
ответ дан Chris Diver 20.06.2011 в 13:30
  • Это хорошая новость, но не все из нас могут обновить наши устаревшие приложения до .NET 4. –  styfle 25.09.2012 в 21:12
  • Это не работает с IE10 –  JoshYates1980 15.03.2017 в 19:09
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);
    }
}
    
ответ дан Colin 17.11.2011 в 00:57
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');
        };
    }
}

Теперь добавьте эту строку на страницу 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 для «текстового поля», который затем находит и использует, чтобы заменить оригинальный атрибут типа.

Удачи!
FJF

    
ответ дан Freaky JellyFish 18.05.2010 в 05:24
  • Я помню, что предыдущие версии IE (не уверенные в IE9) не позволяли изменять типы ввода через javascript. –  Marco Luglio 06.02.2012 в 14:21
2

Я знаю, что этот вопрос старый, но у меня была такая же проблема в приложении Web Forms. Вам нужно использовать TextMode

В документации указано, что

  

Используйте свойство TextMode, чтобы указать, как отображается элемент управления TextBox. Три общих варианта: однострочное, многострочное или текстовое поле пароля.

Вы также можете использовать html5, дату, время, номер и т. д., встроенные в Visual Studio 2012/2013.

Ссылка     

ответ дан maxandcoffee 01.08.2016 в 16:39
  • Это правильный ответ. Мне было больно от предупреждающих сообщений, и я ненавижу отключение предупреждений. Я не знаю, почему я не думал о текстовом режиме - конечно, MS не может использовать собственное имя свойства. –  Ripside 17.11.2016 в 18:50
1

Я пошел по пути создания собственного набора html5 входов путем создания пользовательских элементов управления. Я получаю пользовательские клавиатуры на iPad и iPhone, а также обратно-кодировку истинных элементов управления asp.net. Он работал для моего внутреннего проекта, поэтому я решил лицензировать весь пакет, чтобы сэкономить другим людям время и проблемы с этим с нуля.

Надеюсь, это поможет!

    
ответ дан ja928 23.07.2010 в 15:08
0

На самом деле нет простого способа переопределить атрибут type в стандартном asp: TextBox. Вы можете просто использовать элемент ввода

Вот пример

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

Сообщите мне, если это поможет ...

    
ответ дан Muse VSExtensions 04.05.2010 в 22:03
  • Дизайнер не допускает такого типа! –  Jhonny D. Cano -Leftware- 04.05.2010 в 22:14
  • нет, к сожалению, он вызывает ошибку компиляции –  Jhonny D. Cano -Leftware- 04.05.2010 в 22:18
  • Да, вы правы. Другой способ - наследовать TextBox и переопределить метод AddAttributesToRender (HtmlTextWriter writer). writer.AddAttribute (HtmlTextWriterAttribute.Type, "date"); –  Muse VSExtensions 04.05.2010 в 22:31