2011-11-26 15 views

risposta

22

Con i campi del modulo che è possibile utilizzare questo:

var i = document.createElement("input"); 
i.setAttribute("type", "color"); 
return i.type !== "text"; 

Se il colore è supportato, i.type sarà il colore, ma se non è supportato, il navigatore restituisce il testo come predefinito. Quindi una semplice verifica come questa può aiutarti.

13

Modernizr ha il supporto per il controllo dei nuovi tipi di input.

+1

+1 per menzionare il metodo di gran lunga più semplice, –

1

Si potrebbe fare:

 
function IsAttributeSupported(tagName, attrName) { 
    var val = false; 
    // Create element 
    var input = document.createElement(tagName); 
    // Check if attribute (attrName) 
    // attribute exists 
    if (attrName in input) { 
     val = true; 
    } 
    // Delete "input" variable to 
    // clear up its resources 
    delete input; 
    // Return detected value 
    return val; 
} 

if (!IsAttributeSupported("input", "placeholder")) { 
    // Do something special here 
    alert("placeholder attribute is not supported"); 
} 

Speranza che aiuta

+4

+1, ma "elimina input" non ha alcun effetto. Puoi usare solo 'delete' per rimuovere le proprietà in un oggetto. – pimvdb

+1

Non risponde alla domanda, ovvero se è supportato uno specifico tipo di input, non alcuni attributi come "segnaposto". – Rahul

0

vorrei commentare la risposta accettata, ma non mi consentirà senza una certa reputazione, quindi lo farò in questo modo. se un browser viene eseguito in un tipo di input che non riconosce, verrà automaticamente impostato automaticamente su un input "testo". quindi direi il JS nella risposta non è necessaria (a meno che non si desidera per difetto a qualcosa di diverso 'text')

Problemi correlati