2010-05-15 15 views
7

Bu bir tasarım/css sorusu gibi görünebilir, ancak biraz yardıma ihtiyacım var. Chrome jQuery veya Direct CSS özelliği tarafından ayarlanan Chrome'u görüntülemiyor

Bu

O krom hariç akla gelebilecek her tarayıcılarda çalışır sayfa http://library.permilia.com/Gavin/version2.0_beta/lead.html

olduğunu.

Bu, kırmızı kenarlık olan 1px katı # f00 için sınırları belirleyen bir sınıf .error uyguladığı anlamına gelir. Bazı sebeplerden dolayı kromda ne olursa olsun değiştiremezsin!

Herhangi bir fikri olan var mı?

cevap

6

Bu yüzden, yanıt şu ki, JS kodunuz hiçbir zaman ateş etmiyor, çünkü Chrome form doğrulama da dahil olmak üzere HTML5 giriş öğelerini uyguluyor. Bu nedenle, alanları doğru bir şekilde doldurmadıkça, doğrulama kodunuz asla yanmaz!

HTML5'te, required özniteliği bir faldır, ya doğru ya da yanlıştır. the spec'a göre, tarayıcı sorun alanında bir invalid olayını tetiklemelidir. İsterseniz bu noktada varsayılan engelleme davranışını iptal edebilirsiniz. Ancak, komut dosyanız attr('required')'u denediğiniz yerde yeniden bozulur. true veya false, Chrome'da, HTML5'i kullanarak, beklediğiniz gibi email gibi bir değer döndürmeyecektir. Bunu çalışmak istiyorsanız

Ee bu iki parça eklemek gerekir: Sonra

$(":input").bind("invalid", function(e){ 
    e.preventDefault(); // Don't block the form submit 
}); 

Ve yeniden faktör

var a = $(this).attr('required'); 

adresinin kod olmaya

var a = $(this).attr('required') ? $(this).attr('type') : ""; 

Gerekirse anahtar bildiriminizi değiştirin.

Son bir fikirdir: Ayrıca (aka Detection Özelliği) çok güzel bir yaklaşım ve bunun yerine bunu:

Örtecek bu özelliğiyle mevcut validate: fonksiyonun içini:

if(typeof $('<input />')[0].checkValidity === "undefined") { 
    ... existing code .. 
} else { 
    $(':input').bind('invalid', function(){ 
    $(this).addClass('error'); 
    }).blur(function(){ 
    // If valid, turn off error 
    // If invalid, turn on error 
    $(this).toggleClass('error', !this.checkValidity()); 
    }); 
} 

Here is a demo Chrome'da çalışacak ikinci sürümden ve muhtemelen güncel bir Opera sürümü.

+0

Doug Senden bir yanıt almak için onur duydum! Cevabınız için çok teşekkürler, çok yararlı ve eksiksiz! – agrublev

1

CSS dosyanız, "arka plan rengi" ayarını değil değil. "* Arka plan rengi" ayarlanıyor. IE kesmekse muhtemelen bir çeşit, ancak "gerçek" stil özelliğini ("arka plan rengi") yıldız işareti olmadan ayarlamanız gerekir.

+0

'$ ('input [type = text]') yapılıyor. AddClass ('error')' chrome’un javascript konsolundan gelen girdileri doğru şekilde renklendirir. – x1a4

+0

maalesef, IE7'nin özel seçimini desteklemek için daha sonra eklenmiştir. Ben söylediğim gibi sınır rengi tedarik edilmiyor. – agrublev

İlgili konular