2010-05-04 23 views

Respuesta

0

En realidad no existe una manera fácil de reemplazar el atributo de tipo de asp standart: Cuadro de texto. Se puede utilizar un elemento de entrada simly

Este es un ejemplo

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

Avísame si ayuda ...

+0

¡El diseñador no permite ese tipo! –

+0

no, desafortunadamente aumenta el error de compilación –

+2

Sí, tiene razón. Otra forma es heredar el TextBox y anular el método AddAttributesToRender (HtmlTextWriter writer). writer.AddAttribute (HtmlTextWriterAttribute.Type, "date"); –

3

Aquí es cómo lo hice ... espero que ayude .. .

añadir un nuevo elemento a su proyecto del tipo "JScript archivo", a continuación, pegar este código en:

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

Ahora agregue esta línea en su página aspx después de la etiqueta cuerpo (cambiar el nombre del archivo a lo que usted llama encima!):
<script type="text/javascript" src="setNewType.js"></script>

Por último, añadir algo como lo siguiente a su código detrás pageLoad (solía VB aquí):

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

la parte importante de arriba es la Atributos ("xtype"), ya que lo coloca xtype atributo en el hTML representado por el "cuadro de texto", que se encuentra a continuación, el código JavaScript. y usa para reemplazar el atributo original "tipo".

¡Buena suerte!
FJF

+0

Recuerdo que las versiones anteriores de IE (no estoy seguro acerca de IE9) no permitían cambiar los tipos de entrada a través de javascript. –

1

Fui por la ruta de construir mi propio conjunto de html5 inputs creando controles personalizados. Obtengo los teclados personalizados en iPad y iPhone más la codificación de devolución de los controles de asp.net verdaderos. Funcionó para mi proyecto interno, así que decidí licenciar todo el paquete para ahorrarle a otras personas el tiempo y el problema de hacerlo desde cero.

Espero que esto ayude!

29

Hay una actualización para .NET Framework 4, que le permite especificar el atributo type

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

Ver feature 3 abajo en la hoja

característica 3

nueva sintaxis permite definir un control de cuadro de texto que es HTML5 compatibles.Por ejemplo, el siguiente código define un control TextBox que es compatible con HTML5 :

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

Es una buena noticia, pero no todos nosotros podemos actualizar nuestras aplicaciones heredadas a .NET 4. – styfle

+0

Esto no funciona con IE10 – JoshYates1980

6

Si no te importa la subclasificación, se puede hacer esto mediante la 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

que sé esta pregunta es antigua, pero estaba teniendo el mismo problema en una aplicación de formularios web. Es necesario utilizar TextMode

Mientras que la documentación indica que

utilizar la propiedad TextMode para especificar cómo se muestra un control de cuadro de texto. Tres opciones comunes son cuadro de texto de una línea, línea múltiple o contraseña.

También puede usar html5, fecha, hora, número, etc. integrados en Visual Studio 2012/2013.

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

+0

Esta es la respuesta CORRECTA. Estaba harto de los mensajes de advertencia, y odio inhabilitar las advertencias. No sé por qué no pensé en el modo texto, por supuesto, MS no puede usar el nombre de la propiedad nativa. – Ripside

Cuestiones relacionadas