Selettore CSS per campi di immissione testo?


Risposte:


674
input[type=text]

oppure, per limitare gli input di testo all'interno dei moduli

form input[type=text]

o, per limitarsi ulteriormente a una determinata forma, assumendo che abbia id myForm

#myForm input[type=text]

Avviso: questo non è supportato da IE6, quindi se si desidera sviluppare per IE6 utilizzare IE7.js (come suggerito da Yi Jiang) o iniziare ad aggiungere classi a tutti gli input di testo.

Riferimento: http://www.w3.org/TR/CSS2/selector.html#attribute-selectors


Poiché viene specificato che i valori degli attributi predefiniti potrebbero non essere sempre selezionabili con i selettori di attributo, si potrebbe provare a coprire altri casi di markup per i quali vengono visualizzati gli input di testo:

input:not([type]), // type attribute not present in markup
input[type=""], // type attribute present, but empty
input[type=text] // type is explicitly defined as 'text'

Tuttavia, questo lascia il caso quando il tipo è definito, ma ha un valore non valido e ricade ancora su type = "testo". Per capire che potremmo usare selezionare tutti gli input che non sono uno degli altri tipi conosciuti

input:not([type=button]):not([type=password]):not([type=submit])...

Ma questo selettore sarebbe abbastanza ridicolo e anche l' elenco dei possibili tipi sta crescendo con l'aggiunta di nuove funzionalità all'HTML.

Avviso: la :notpseudo-classe è supportata solo a partire da IE9.


41
+1 per citare lo standard attuale piuttosto che alcuni siti web tutorial
Šime Vidas

7
Grazie. Ho notato che le persone citano la prima cosa che appare su Google ... o w3schools.
Alin Purcaru,

Sì, è un po 'fastidioso
Šime Vidas il

Funziona in IE6? Per una soluzione cross-browser tendo a preferire aggiungere classi (.input-text, .input-submit, ecc.) Fa schifo per lo sviluppo di html, ma rende i CSS e JavaScript un po 'più belli.
zzzzBov,

1
@MubasharAhmad Ho aggiornato la mia risposta e, come puoi vedere, esiste una soluzione alternativa solo se stai prendendo di mira i browser sopra IE9.
Alin Purcaru,

37

È possibile utilizzare il selettore di attributi qui:

input[type="text"] {
    font-family: Arial, sans-serif;
}

Questo è supportato in IE7 e versioni successive. È possibile utilizzare IE7.js per aggiungere supporto per questo se è necessario supportare IE6.

Vedere: http://reference.sitepoint.com/css/attributeselector per ulteriori informazioni


Stai attento, la famiglia di caratteri generici corretta sans-serifnon lo è san-serif.
Volker E.

14

Di solito uso selettori nel mio foglio di stile principale, quindi creo un file .js (jquery) ie6 specifico che aggiunge una classe a tutti i tipi di input. Esempio:

$(document).ready(function(){
  $("input[type='text']").addClass('text');
)};

E poi basta duplicare i miei stili nel foglio di stile specifico ie6 usando le classi. In questo modo il markup effettivo è un po 'più pulito.


È molto lento
Hidayt Rahman,

8

È possibile utilizzare il :textSelettore per selezionare tutti gli input con il tipo di testo

Fiddle di lavoro

$(document).ready(function () {
    $(":text").css({    //or $("input:text")
        'background': 'green',
        'color':'#fff'
    });
});

:textè un'estensione jQuery e non fa parte della specifica CSS, le query che utilizzano: text non possono sfruttare il miglioramento delle prestazioni fornito dal metodo querySelectorAll () DOM nativo. Per prestazioni migliori nei browser moderni, utilizzare [type="text"]invece. Questo funzionerà per IE6+.

$("[type=text]").css({  // or $("input[type=text]")
    'background': 'green',
    'color':'#fff'
});

CSS

[type=text] // or input[type=text] 
{
    background: green;
}

2

Ho avuto il campo di testo del tipo di input in un campo della riga della tabella. Lo sto prendendo di mira con il codice

.admin_table input[type=text]:focus
{
    background-color: #FEE5AC;
}

0

Come @Amir ha pubblicato sopra, il modo migliore al giorno d'oggi - cross-browser e lasciare dietro IE6 - è usare

[type=text] {}

Nessuno ha menzionato la specificità CSS inferiore ( perché è così importante ?) Finora, [type=text] presenta 0,0,1,0 anziché 0,0,1,1 con input[type=text].

Per quanto riguarda le prestazioni, non c'è più alcun impatto negativo.

normalizzare v4.0.0 appena rilasciato con specificità di selettore ridotta .


0

Con il selettore di attributi miriamo al testo del tipo di input nei CSS

input[type=text] {
background:gold;
font-size:15px;
 }

0

input [type = text]

Ciò selezionerà tutto il testo del tipo di input in una pagina Web.


-1

I selettori di attributo vengono spesso utilizzati per gli input. Questo è l'elenco dei selettori di attributi:

[titolo] Tutti gli elementi con l'attributo titolo sono selezionati.

[title = banana] Tutti gli elementi che hanno il valore 'banana' dell'attributo title.

[title ~ = banana] Tutti gli elementi che contengono "banana" nel valore dell'attributo title.

[title | = banana] Tutti gli elementi il ​​cui valore dell'attributo title inizia con 'banana'.

[title ^ = banana] Tutti gli elementi il ​​cui valore dell'attributo title inizia con 'banana'.

[title $ = banana] Tutti gli elementi il ​​cui valore dell'attributo title termina con 'banana'.

[title * = banana] Tutti gli elementi il ​​cui valore dell'attributo title contiene la sottostringa 'banana'.

Riferimento: https://kolosek.com/css-selectors/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.