2013-04-04 20 views
10

input öğesindeki sözdizimi sınıfı :invalid öğesinin "görünümünü" Javascript aracılığıyla algılamanın bir yolu var mı?Pseudo sınıfını algıla: javascript'ten geçersiz

Başka bir deyişle, sözde sınıfının bir input öğesinde görüntülendiğinde, bazı Javascript kodlarının çalıştırılması nasıl tetiklenebilir?

+0

Belki jQuery'yi kullanamazsınız, ancak '$ (' input ')' u denediğiniz var mı? (': Invalid') '? –

+0

'! Input.validity.valid' denediniz mi? – Bergi

cevap

14

Dinlemenizi sağlayan geçersiz bir olay var.

Geçersiz bir olay, denetlenebilir bir öğe denetlendiğinde ve kısıtlamalarını karşılamıyorsa tetiklenir. Teklif edilen unsurların geçerliliği, sahiplerinin formunu sunmadan önce veya kontrol edilen elementin veya sahiplik formunun checkValidity() 'inden sonra kontrol edilir. O sonra ne fazlası var ise

https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/invalid

, ayrıca unsurları geçerliliğini kontrol etmek erişebilir bazı özellikleri vardır. eleman tüm kısıt doğrulamaları karşılar ve bu nedenle geçerli olarak kabul edilir .validity.valid

.

https://developer.mozilla.org/en-US/docs/DOM/ValidityState

Düzenleme: Bu soruyu ... bu en iyi ihtimalle spotty olduğu için .validity.valid aslında kısıtlama Constraint Validation API parçası ve desteğidir

cevap beri bazı şeyleri öğrendim ki çok kötü (bu API'da çok fazla şey var).

Ancak, iyi çalıştığı anlaşılan bir şey, şu anda geçersiz olan tüm form öğelerinin canlı olmayan bir NodeList değerini döndüren querySelectorAll(':invalid'). Form öğelerinizde addEventListener('change' ..etc, vb .'yi arayabilir ve her ne zaman tetiklendiğini sorgulayabilirsiniz.

+1

Markdown'un kullanılabilir/daha uygun olduğu HTML'yi kullanmak, ilginç post formatlamaya yol açabilir. Bkz. Http://stackoverflow.com/editing-help – BoltClock

+0

Bu tarayıcı mıdır? – jldupont

+0

@jldupont: Bu bir standarttır ve HTML5 doğrulama etkinleştirilmiş her tarayıcı afaik'i destekler. – Bergi