Salt okunur özniteliği CSS ile nasıl şekillendirebilirim?


150

Şu anda alanları devre dışı bırakmak için readonly = "readonly" kullanıyorum. Şimdi öznitelik CSS kullanarak stil çalışıyorum. Kullanmayı denedim

input[readonly] {
/*styling info here*/
}

ama bir sebepten dolayı çalışmıyor. Ben de denedim

input[readonly='readonly'] {
/*styling info here*/
}

bu da işe yaramıyor.

Salt okunur özniteliği CSS ile nasıl biçimlendirebilirim?


12
input[readonly]çalışmalı. Stil sayfanızın başka bir yerinde başka, daha spesifik seçiciler tarafından geçersiz kılınmadığından emin olun.
BoltClock

1
devre dışı bırakmak istiyorsanız, özürlü özelliğini kullanın ve salt okunur değil
Sven Bieder

3
@SvenBieder Salt okunur ve devre dışı bırakılmış olanların farklı davranışları vardır. Devre dışı bırakılan alanlar değilken form gönderildiğinde sunucuya gönderilen salt okunur alanlar.
Naren

3
input[readonly='readonly']yalnızca HTML gibi kullanırsanız çalışır <input readonly="readonly">, örn <input readonly>. input[readonly]her ikisiyle de eşleşmelidir.
Mathias Bynens

1
!important!importantayar sınıfında yoksa, geçersiz kılmak için çalışmalısınız ?
Matt K

Yanıtlar:


204
input[readonly]
{
    background-color:blue;
}

https://curtistimson.co.uk/post/css/style-readonly-attribute-css/


24
Bunun input[readonly]yerine, readonlybelirli bir değere sahip olacak şekilde tasarlanmamış bir Boolean özniteliği olarak kullanmalısınız .
BoltClock

1
@BoltClock Evet. Lütfen aşağıdaki Yanıt'taki çözüme bakın.
Pal R

Tekrar nasıl yazılabilir yapabilirim? Sadece sınıf stilini kaldırmak mı?
Renaro Santos

@RenaroSantos Bu bir HTML değişikliğidir. Kaldır readonly="readonly"senin dan inputelemanı.
Curt

IE7 ile hala jQuery ile selektörü kullanabilirsiniz
ladieu

69

Not olduğunu textarea[readonly="readonly"]ayarladığınız takdirde eserler readonly="readonly"HTML ancak ayarlamış eğer çalışmazsa readOnlyiçin -attribute trueveya "readonly"JavaScript aracılığıyla.

JavaScript ile ayarlarsanızreadOnly CSS seçicinin çalışması için seçiciyi kullanmanız gerekir textarea[readonly].

Firefox 14 ve Chrome 20'de aynı davranış.

Güvenli tarafta olmak için her iki seçiciyi de kullanıyorum.

textarea[readonly="readonly"], textarea[readonly] {
...
}

18
Bunun textarea[readonly]yerine sadece kullanabilirsiniz - her textarea[readonly="readonly"]şeyin buna uyması garanti edilir.
BoltClock

23

Güvende olmak için her ikisini de kullanmak isteyebilirsiniz ...

input[readonly], input[readonly="readonly"] {
    /*styling info here*/
}

Salt okunur özniteliği, boş veya "salt okunur" (yalnızca geçerli değerler) olabilen bir "boole özniteliğidir". http://www.whatwg.org/specs/web-apps/current-work/#boolean-attribute

Eğer jQuery .prop('readonly', true)işlevi gibi bir şey kullanıyorsanız , ihtiyacınız olacak [readonly], eğer kullanıyorsanız .attr("readonly", "readonly")o zaman ihtiyacınız olacak [readonly="readonly"].


Düzeltme: Yalnızca kullanmanız gerekir input[readonly]. Dahil olmak input[readonly="readonly"]gereksizdir. Bkz. Https://stackoverflow.com/a/19645203/1766230


20

Burada bir sürü cevap var, ama kullandığımı görmedim:

input[type="text"]:read-only { color: blue; }

Sahte seçicideki tireye dikkat edin. Girdi ise, readonly="false"bu seçici değerden bağımsız olarak salt okunur varlığı yakaladığından bunu da yakalar. Teknik falseözelliklere göre geçersizdir, ancak internet mükemmel bir dünya değildir. Bu vakayı kapsamanız gerekiyorsa, bunu yapabilirsiniz:

input[type="text"]:read-only:not([read-only="false"]) { color: blue; }

textarea aynı şekilde çalışır:

textarea:read-only:not([read-only="false"]) { color: blue; }

Html artık sadece desteklediğini unutmayın type="text", ancak bu tür bir diğer metinsel türlerinin yetişme number, tel, email, date, time, urlHer gerekir vs. seçicinin eklenecek.


2
Ben de yapmam. LOL Evet, haklısın! Şimdilik. :read-onlyve diğer psuedo seçicileri W3C standardına eklenmiştir ve IE 10 önizleme derlemeleri 10547 ve daha üstü ile kullanılabilir.
IAmNaN

6

Bunu yapmanın birkaç yolu var.

Birincisi en yaygın kullanılanıdır. Tüm büyük tarayıcılarda çalışır.

input[readonly] {
 background-color: #dddddd;
}

Yukarıdakiler readonlyekli olan tüm girişleri seçecek olsa da , aşağıdaki giriş sadece istediğinizi seçecektir. demoİstediğiniz giriş türüyle değiştirdiğinizden emin olun .

input[type="demo"]:read-only {
 background-color: #dddddd;
}

Bu birinciye alternatif, ancak çok fazla kullanılmıyor:

input:read-only {
 background-color: #dddddd;
}

:read-onlySeçici Krom, Opera ve Safari desteklenir. Firefox kullanır :-moz-read-only. IE :read-onlyseçiciyi desteklemiyor .

Ayrıca kullanabilirsiniz input[readonly="readonly"], ancak bu input[readonly]benim deneyimim ile hemen hemen aynı .


4
input[readonly], input:read-only {
    /* styling info here */
}

Salt okunur bir giriş alanı için tüm durumları kapsamalıdır ...


input: salt okunur "devre dışı bırakılmış, salt okunur ve içerikli HTML Niteliklerine dayalı form stilini kolaylaştırmayı amaçlayan değişkenlik sözde sınıfı" Burada belirtildiği gibi css-tricks.com/almanac/selectors/r/read-write-read , çeşitli uygulamalar oldukça sakat.
peater

Bu garip ama sadece girdi [salt okunur] FF 58'de benim için çalıştı
Pavel_K

3

Yalnızca ilk harfini büyük yaz

input[readOnly] {
      background: red !important;
    }
<input type="text" name="country" value="China" readonly="readonly" />


2

Girdiyi id ile seçer ve sonra input[readonly="readonly"]etiketi css'e eklerseniz , şöyle bir şey:

 #inputID input[readonly="readonly"] {
     background-color: #000000;
 }

Bu işe yaramayacak. Bir üst sınıf veya kimlik ve ardından girdiyi seçmeniz gerekir. Gibi bir şey:

 .parentClass, #parentID input[readonly="readonly"] {
     background-color: #000000;
 }

İş yerinde yeni biletler beklerken 2 sentim: D


"Girişi id ile seçerseniz" - ki bu OP ile ilgili değildir, peki bu nasıl alakalı? Durum böyle olsa bile, yanılıyorsunuz, sadece soyundan gelen birleştiriciyi çıkarmanız gerekiyor.
Quentin

AH tamam, input [likeonly = "readonly"] # inputID gibi bir şey yazmak zorunda olduğumu mu demek istediniz? / me fool .. haklısın
softwareplay

1

Tüm tarayıcılarda çalışmak için aşağıdakileri kullanın:

 var readOnlyAttr = $('.textBoxClass').attr('readonly');
    if (typeof readOnlyAttr !== 'undefined' && readOnlyAttr !== false) {
        $('.textBoxClass').addClass('locked');
    }

2
Bu nedenle, hedef kitlenizin% 2'de olmadığını umuyoruz.
Bacco

Ne 'kilitli' sınıfı içerir ??
AdiT

$ ('. textBoxClass'). addClass ('kilitli') 'kilitli' içerir
Pal R
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.