Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
Radio alanlarını aynı soruya ait seçenekler olarak gruplamak için aynı form sahibine ve aynı ağaç kapsamına ait kontrollere ortak, boş olmayan name değeri verin. Böylece kullanıcı yalnızca birini seçebilir. Checkbox alanları ise aynı name değerine sahip olsalar bile birbirini dışlamaz; birden fazla seçimin gönderilmesi gerekiyorsa her checkbox için aynı name değerini ve sunucu ayrıştırıcısının beklediği alan adını kullanın. [] HTML’in evrensel dizi türü değildir; alan adının parçasıdır, PHP gibi ayrıştırıcılar onu dizi olarak yorumlar.

Görsel ve anlamsal gruplama için ilgili alanları fieldset içine, grubun açıklamasını da legend içine yerleştirin. id değerleri her kontrol için benzersiz olmalı; label öğesinin for değeri ilgili kontrolün id değeriyle eşleşmelidir. Asıl seçim davranışını belirleyen unsur name değeridir; yalnızca aynı fieldset içinde bulunmak radio alanlarını tek seçimli yapmaz.

Çalışan temel örnek​


Aşağıdaki formda iletişim tercihi tek seçenekli, ilgi alanları ise çok seçeneklidir. action değeri örnek amaçlıdır; kendi sunucu uç noktanızla değiştirilmelidir.

Kod:
<!doctype html>
<html lang="tr">
<head>
  <meta charset="utf-8">
  <title>Alan gruplama örneği</title>
  <style>fieldset, input, button { border-radius: 3px; }</style>
</head>
<body>
  <form action="/form" method="post">
    <fieldset>
      <legend>İletişim tercihi</legend>

      <input type="radio" id="email" name="contact_method" value="email" required>
      <label for="email">E-posta</label>

      <input type="radio" id="phone" name="contact_method" value="phone">
      <label for="phone">Telefon</label>
    </fieldset>

    <fieldset>
      <legend>İlgi alanları</legend>

      <input type="checkbox" id="html" name="interests[]" value="html">
      <label for="html">HTML</label>

      <input type="checkbox" id="css" name="interests[]" value="css">
      <label for="css">CSS</label>

      <input type="checkbox" id="javascript" name="interests[]" value="javascript">
      <label for="javascript">JavaScript</label>
    </fieldset>

    <button type="submit">Gönder</button>
  </form>
</body>
</html>

Dosyayı tarayıcıda açıp ilk grupta iki seçeneği art arda deneyin: ikinci radio seçildiğinde ilk seçim otomatik olarak kaldırılmalıdır. Checkbox grubunda ise birden fazla kutu işaretli kalmalıdır. Form gönderildiğinde örnek veri mantıksal olarak şu şekildedir: contact_method=phone ve seçilen kutular için interests[]=html gibi ayrı değerler gönderilir.

İhtiyaçKontrolname kullanımıBeklenen sonuç
Tek seçenekradioAynıGruptan bir değer
Birden fazla seçenekcheckboxAynı alan adı; dizi gösterimi ayrıştırıcıya bağlıSıfır veya daha çok değer
Bağımsız onaylarcheckboxFarklıHer alan ayrı değerlendirilir


Uygulama ve kontrol adımları​


  1. Tek bir cevabın seçileceği her radio grubundaki tüm kontrollere aynı name değerini verin. Farklı soruların radio alanlarında farklı name değerleri kullanın.
  2. Birden fazla cevaba izin verilen checkbox alanlarında aynı mantıksal alan adını kullanın. Sunucu tarafınız dizileri destekliyorsa interests[] biçimini; desteklemiyorsa sunucunuzun beklediği dizi aktarım biçimini seçin.
  3. Her kontrol için benzersiz bir id tanımlayın ve metni label for="..." ile bağlayın. Kullanıcının metne tıklayarak seçim yapabilmesi, erişilebilirlik ve kullanılabilirlik açısından önemlidir.
  4. Grubu fieldset ve legend ile açıklayın. Zorunlu bir radio cevabı gerekiyorsa genellikle gruptaki uygun bir radio kontrolüne required ekleyin.
  5. Formu gönderip sunucu tarafında gelen alan adlarını ve değerlerini kontrol edin. Hiç checkbox seçilmemişse bu alanın hiç gönderilmemesi normaldir; sunucu bunu boş liste olarak ele almalıdır.

Sık yapılan hatalar ve karar tablosu​


Yukarıdaki tablo tek ve çoklu seçim davranışını ayırır. Aynı name değerinin nasıl çözüldüğünü sunucu tarafında da doğrulayın:

Radio alanlarına yanlışlıkla farklı name değerleri vermek, kullanıcının aynı soruda birden fazla seçenek işaretleyebilmesine yol açar. Tersine, bağımsız onay kutularına aynı radio mantığı uygulanamaz; checkbox'ları radio türüne çevirmek çoklu seçimi engeller. Ayrıca id değerlerini aynı yapmak veya bir checkbox seçilmediğinde sunucuya boş bir değer geleceğini varsaymak hatalıdır. Radio grubunda hiçbir seçenek işaretli değilse, required yoksa alan sunucuya hiç gelmeyebilir; bu nedenle zorunlu alan doğrulamasını sunucu tarafında da yapın.

Sık sorulan sorular​

Checkbox grubundan en az biri için required yeterli mi?​

Tek bir checkbox’a required eklemek o kutunun işaretlenmesini zorunlu kılar; gruptaki herhangi birinin seçilmesi anlamına gelmez. En az bir seçim kuralını grup düzeyinde istemci ve sunucuda ayrıca doğrulayın. Radio grubunun required davranışını checkbox’a aynen taşımayın.

FormData neden seçeneklerin yalnız birini döndürüyor?​

Aynı adlı çoklu alanlar için get() yalnız ilk değeri verir; getAll() bütün değerleri alır. Örnekte gerçek alan adı interests[] olduğundan aynı adı kullanın. Devre dışı veya işaretlenmemiş checkbox gönderilmez; eksik alanı istemci ve sunucuda kontrollü boş liste olarak değerlendirin.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.