HTML5, JavaScript kullanmak zorunda kalmadan formlarda istemci tarafında doğrulamayı daha iyi tanımlayabilme özelliğine ekledi. Konsept "maxlength" ve "minlength" gibi özelliklerle zaten mevcuttu. "Gerekli" ve "desen" gibi özelliklerle genişletildi. Bununla birlikte, HTML5, bu özelliklerdeki sınırlamaları da tanımlamıştır ve WebKit tarayıcıları bu kısıtlamaları uygulamıştır (muhtemelen Firefox ve Opera'nın çok gerisinde değil).HTML5'te gizli form kontrolleri ele alınıyor mu?
restrictions in question, display: none
veya visibility: hidden
CSS kurallarını kullanarak CSS/JavaScript tarafından gizlendiğinde form kontrolünün görünürlüğü ile ilgilidir. kısıtlamalar gibi tanımlanmıştır: Bir input
elemanın tip özelliği Gizli durumundayken
4.10.7.1.1 Gizli durum
[...]
input
elemanı olmayan bir değeri temsil eder Kullanıcı tarafından incelenmek veya manipüle edilmek üzere tasarlanmıştır.
value
IDL özellik [Ayrıca]bu eleman için geçerlidir ve mod varsayılan bulunmaktadır.
- aşağıdaki içerik nitelikleri belirtilen edilmemelidir ve eleman için geçerli değildir:
accept
,alt
,autocomplete
,checked
,dirname
,formaction
, ,formmethod
,formnovalidate
,formtarget
,height
,list
,max
,maxlength
,min
,multiple
pattern
,placeholder
,readonly
,required
,size
,src
,step
vewidth
.- şu IDL nitelikleri ve yöntemler eleman için geçerli değildir:
checked
,files
,list
,selectedOption
,selectionStart
,selectionEnd
,selectionDirection
,valueAsDate
vevalueAsNumber
IDL nitelikleri;select()
,setSelectionRange()
,stepDown()
vestepUp()
yöntemleri.input
vechange
olayları geçerli değildir. İlk bakışta
, o doğrulama formda kullanıcı kontrolü üzerinde üzerinde sahip olduğu kontrol yapılması gerekmez söylemek mantıklı. Ve formun varsayılan form kontrol öğelerini kullanarak oluşturduğu için, bunlar mantıklıdır. Ama şimdi, uzak form kontrolleri oluştururken bir sorun ortaya çıktı.
Ne HTML5 ne de CSS3 (büyük tarayıcılar) form denetimlerini biçimlendirmeyi çok daha kolaylaştırmıştır. <select>
öğeleri, stil açısından büyük ölçüde kısıtlanmıştır ve <input>
ve <button>
öğeleri, rahatsız edici biçimde farklı stil kurallarına (ve IE dışındaki tarayıcılar için, imkansız CSS tarayıcı hedeflemesine yakın) sahiptir. Bu nedenle, tasarımcılarım "güzel" form kontrolleri istediğinde, HTML, CSS ve JavaScript kullanarak yeniden oluşturulmaları gerekebilir. Simüle edilmiş kontrol, CSS tarafından gizlenen gerçek kontrolü uzaktan kontrol edecektir.Bu benim için <select>
, <input type="checkbox">
ve <input type="radio">
öğeleri için geçerlidir, hepsi WebTit tarayıcılarda required
özniteliği verildiğinde bir soruna neden olur.
HTML5 özellikleri, gizli form denetimlerinde required
gibi belirli özniteliklerin bulunamayacağını bildirdiğinden, tarayıcıların geçersiz özniteliklere yanıt vermesi gerekir. WebKit tarayıcıları, formun hiç gönderilmemesiyle yanıt verir (ve JavaScript'in submit
olayını tetiklemez). Şu anda <select>
öğesi ile hataya koşuyorum.
Krom konsola bu hata ile başarısız: name = 'eleman-name' ile
Geçersiz form denetimi odaklanabilir değildir.
Yani, beni alakadar listedeki bir öğeyi seçin:
Safari mesajla penceresinin alt gri bir çubuk göstererek başarısız HTML5'in çok kısıtlı olup olmadığını mı yoksa bu soruna yanlış bir şekilde yaklaşıyorum. Ya:
- HTML5'in özellikleri kusurludur ve başka bir çözüm olmadan ek bir kısıtlama ekler. HTML5, bir form denetimi görünmüyorsa, kullanıcının bununla etkileşimde bulunmaması gerektiğini varsayar. Bu, geliştiricilerin, orijinal form denetimi gizli kalırken, uzaktan kontrol ettiğimiz öğeler için HTML5'in doğrulama özniteliklerini kullanmasını engeller. Özel denetimlerimizi yalnızca CSS kullanarak oluşturma yeteneğine hala sahip değiliz;
- Uzak form denetimlerini yanlış kullanıyorum. çok iyi tanımlanmış bir sorunu çözmek için "eski" bir teknik kullanıyorum olarak, benim yaklaşımım modası geçmiş olabilir. WebKit şu anda bu kısıtlamayı ele alan tek kişi olduğu için, WebKit'in henüz bulamadığım bir çözümü var. Dinamik JavaScript, bir form denetimi gizlemek zaman
- kısıtlı özelliklerini çıkarmak için
şu anda düşünebildiğim tek geçici çözümler Ben, HTML5 doğrulamasını feda demek ki vardır
submit
olayı hiç tetiklenmediğinden ve gönderim düğmesinde click
olayını tetiklemeden bir form göndermek veyanovalidate
özniteliğini kullanın.Doğru şekilde mi bakıyorsunuz yoksa bir şey mi özlüyorum?
P.S. Uzunluk için üzgünüm. Aradan sonra her şey benim "tl; dr".
Çok yardımcı bir yanıt değil, ancak CSS ile elde edemeyeceğiniz form denetimi tasarımlarını uygulamayı kabul etmediğinizi veya HTML5’in gizli alanlardaki doğrulama özelliklerini kullanmamanızı öneririz. –
@PaulD Bunun yapılmaması gereken bir seçenek olduğunu hissediyorum. HTML5 çok uzun sürdü çünkü web’de mevcut haliyle çalışmak için tanımlanması gerekiyordu. Bu durumda, özel form kontrollerimizden kurtulmak veya HTML4 form işlemeye geri dönmek zorundayız. Her iki durumda da, ağı ileriye taşımayız. – Koviko
gerçekten “geri dönmek” zorunda değilsin, değil mi? Gizli form alanlarını kullanıyorsanız, yalnızca HTML5’in doğrulama özelliklerinden yararlanamazsınız. HTML’nin yerleşik form alanlarını zaten JavaScript’le yeniden oluşturduğunuz düşünülürse, bunun bir başka kısmı da budur. –