2010-05-04 17 views

risposta

0

In realtà non v'è alcun modo semplice per ignorare l'attributo type in standart asp: TextBox. È simly possibile utilizzare un elemento di input

Ecco un esempio

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

farmi sapere se aiuta ...

+0

Designer non permette questo tipo! –

+0

no, sfortunatamente solleva errore di compilazione –

+2

Sì, hai ragione. Un altro modo è di ereditare il TextBox e di sovrascrivere il metodo AddAttributesToRender (HtmlTextWriter writer). writer.AddAttribute (HtmlTextWriterAttribute.Type, "date"); –

3

Ecco come ho fatto ... spero che aiuta .. .

aggiunge un nuovo elemento al progetto del tipo "File JScript", quindi incollare questo codice in:

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

Ora aggiungere questa riga nella tua pagina aspx dopo la tag corpo (cambiare il nome del file per tutto ciò che ha chiamato sopra!):
<script type="text/javascript" src="setNewType.js"></script>

Infine, aggiungere qualcosa di simile a quanto segue al codice dietro PageLoad (ho usato VB qui):

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

la parte importante sopra è il Attributi ("xtype"), in quanto pone il xtype attributo html rendering per il "testo", che il javaScript rileva poi. e utilizza per sostituire l'attributo "tipo" originale.

Buona fortuna!
FJF

+0

Ricordo che le versioni precedenti di IE (non sono sicuro di IE9) non permettevano di cambiare i tipi di input tramite javascript. –

1

Sono andato a creare il mio set di html5 inputs creando controlli personalizzati. Ottengo le tastiere personalizzate su iPad e iPhone più la codifica postback dei veri controlli di asp.net. Ha funzionato per il mio progetto interno, quindi ho deciso di concedere in licenza l'intera suite per salvare altre persone il tempo e il problema di farlo da zero.

Spero che questo aiuti!

29

C'è un aggiornamento per .NET framework 4, che consente di specificare l'attributo type

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

Vedi feature 3 modo in basso nella pagina

Caratteristica 3

Nuova sintassi consente di definire un controllo TextBox che è HTML5 compatibili.Ad esempio, il codice seguente definisce un controllo TextBox che è HTML5 compatibile:

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

Questa è una buona notizia, ma non tutti noi possiamo aggiornare le nostre applicazioni legacy a .NET 4. – styfle

+0

Questo non funziona con IE10 – JoshYates1980

6

Se non ti dispiace sottoclassi, è possibile farlo da 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

lo so questa domanda è vecchia, ma stavo avendo lo stesso problema in un'applicazione Web Forms. È necessario utilizzare TextMode

Mentre la documentazione afferma che

utilizzare la proprietà TextMode per specificare la modalità di visualizzazione di un controllo TextBox. Tre opzioni comuni sono la casella di testo a riga singola, multilinea o password.

È inoltre possibile utilizzare html5, data, ora, numero, ecc. Incorporati in Visual Studio 2012/2013.

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

+0

Questa è la risposta GIUSTA. Ero stufo dei messaggi di avvertimento e odio gli avvertimenti disabilitanti. Non so perché non ho pensato alla modalità testo - ovviamente MS non può usare il nome della proprietà nativa. – Ripside

Problemi correlati