2012-07-10 16 views
7

In Javascript, dato il id di un elemento (in un formato String), come è possibile verificare se l'elemento id si riferisce a un elemento dell'elenco a discesa o a un elemento di immissione del testo?Come posso verificare se un elemento è un elemento dell'elenco a discesa o un elemento di immissione del testo, dato il suo id?

La funzione deve restituire true se il id riferisce ad una lista di goccia elemento (<select>), o un elemento di input testo verso il basso, e false altrimenti.

risposta

13

provare a utilizzare: document.getElementById('idNameGoesHere').tagName

Quindi la funzione potrebbe essere:

function isSelectOrTextField(idName) { 
    var element = document.getElementById(idName); 
    if(element.tagName === 'SELECT') {return true;} 
    if(element.tagName === 'INPUT' && element.type === 'text') {return true;} 
    return false; 
} 

è possibile espandere questo per verificare la presenza di <textarea> pure .

EDIT: O scegliere jbabey di answer come è usando nodeName ed è meglio formattato.

apparentemente nodeName has wider browser support.

+0

questa sarebbe una buona risposta se fosse espansa un po '. – jbabey

+1

Il vantaggio di questo è che non sta usando jquery. –

20

Se avete già jquery incluso, è possibile utilizzare the is function:

$('#myid').is('input, select') 

o forse

$('#myid').is('input, textarea, select') 

se si desidera includere anche textarea

o

$('#myid').is('input:not([type="button"]), textarea, select') 

(questo restituisce true se è un textare o un menu a discesa o un input che non è un pulsante).

Hai tutta la potenza di jquery selectors per adattare la query alle tue esigenze.

Dimostrazione: http://jsfiddle.net/ELuEJ/ (cercare di cambiare il codice HTML)

+0

senza jQuery menzionato. – jbabey

0
$('#myId')[0].tagName 

si può retrive l'elemento DOM e quindi controllare il tagName

+0

no jQuery menzionato. – jbabey

3

È possibile utilizzare i nodeName e type proprietà degli elementi DOM per determinare questo. Non sono richieste librerie esterne.

var isSelectOrTextInput = function (element) { 
    var nodeName = element.nodeName; 

    return nodeName === 'SELECT' || 
     (nodeName === 'INPUT' && 
     element.type.toLowerCase() === 'text'); 
}; 

campione di lavoro: http://jsfiddle.net/ytHQD/

Problemi correlati