Devre Dışı Radyo Düğmelerini Etkinleştirme: Adım Adım Kılavuz
Web formları ile çalışırken, kullanıcı etkileşimlerine dayalı olarak giriş alanlarını dinamik olarak etkinleştirme veya devre dışı bırakma gerektiği durumlarla karşılaşmak yaygındır. Bu durumlardan biri, bir açılır menüdeki seçime bağlı olarak radyo düğmeleri nin etkinleştirilmesi veya devre dışı bırakılması gerektiğidir. Farklı tarayıcılar arasında, özellikle Internet Explorer ile Firefox (FF) veya Safari gibi diğerleri arasında tutarsızlıklar yaşadıysanız, yalnız değilsiniz. Bu blog gönderisi, radyo düğmelerinizin kullanıcının kullandığı tarayıcı ne olursa olsun doğru bir şekilde davranmasını sağlamak için bir çözüm ile sizi yönlendirecektir.
Sorun
Orijinal kodda, radyo düğmeleri, kullanıcı açılır menüden bir seçenek seçtiğinde devre dışı bırakılacak veya etkinleştirilecek şekilde tasarlanmıştır. Bu işlevsellik Internet Explorer’da sorunsuz çalışırken, Firefox ve Safari gibi diğer tarayıcılarda, özellikle kullanıcıların farenin yerine klavyeyle gezinmesi durumunda sorunlar yaşanmaktadır. Radyo düğmelerinin devre dışı bırakılması veya etkinleştirilmesi, sayfanın başka bir yerinde ek bir tıklama yapıldıktan sonra etkili olur. Bu beklenmedik davranış, kullanıcılar için kafa karışıklığına yol açabilir.
Kod Örneği
İşte tipik olarak bulacağınız başlangıç kodunun basitleştirilmiş bir versiyonu:
<form name="frm" action="coopfunds_transfer_request.asp" method="post">
<select name="user" onchange="javascript: SetLocationOptions()">
<option value="">Birini Seçin</option>
<option value="58" user_is_tsm="0">Her iki radyo düğmesini etkinleştir</option>
<option value="157" user_is_tsm="1">2 radyo düğmesini devre dışı bırak</option>
</select>
<br/><br/>
<input type="radio" name="transfer_to" value="fund_amount1" />Premium
<input type="radio" name="transfer_to" value="fund_amount2" />Diğer
<input type="radio" name="transfer_to" value="both" CHECKED />Her ikisi
<br/><br/>
<input type="button" class="buttonStyle" value="Talebi Gönder" />
</form>
Çözüm
Tutarsızlıkları gidermek ve tarayıcı uyumluluğunu artırmak için, select
elemanının klavye olaylarına da yanıt verecek şekilde geliştirebiliriz. Özellikle, bir keyup
olay işleyici eklemek, kodun yalnızca açılır menünün fareyle değiştiğinde değil, aynı zamanda klavye ile gezindiğinde de tetiklenmesine olanak tanır.
Güncellenmiş Kod
Gerekli değişiklikleri nasıl gerçekleştireceğinizi aşağıda bulabilirsiniz:
- Bir
onkeyup
olayı ekleme: Bu, kullanıcı bir tuşa bastıktan sonraselect
kutusuyla etkileşimde bulunduğundaSetLocationOptions
fonksiyonunu çağıracaktır.
<select name="user" id="selUser" onchange="SetLocationOptions()" onkeyup="SetLocationOptions()">
Tam JavaScript Fonksiyonu
Bağlam olarak, işte güncellenmiş HTML ile birlikte SetLocationOptions
fonksiyonunun tamamı:
function SetLocationOptions() {
var frmTemp = document.frm;
var selTemp = frmTemp.user;
// Seçilen öğe indeksini kontrol et
if (selTemp.selectedIndex >= 0) {
var myOpt = selTemp.options[selTemp.selectedIndex];
if (myOpt.attributes[0].nodeValue == '1') {
frmTemp.transfer_to[0].disabled = true;
frmTemp.transfer_to[1].disabled = true;
frmTemp.transfer_to[2].checked = true;
} else {
frmTemp.transfer_to[0].disabled = false;
frmTemp.transfer_to[1].disabled = false;
}
}
}
<form name="frm" action="coopfunds_transfer_request.asp" method="post">
<select name="user" id="selUser" onchange="SetLocationOptions()" onkeyup="SetLocationOptions()">
<option value="">Birini Seçin</option>
<option value="58" user_is_tsm="0">Her iki radyo düğmesini etkinleştir</option>
<option value="157" user_is_tsm="1">2 radyo düğmesini devre dışı bırak</option>
</select>
<br/><br/>
<input type="radio" name="transfer_to" value="fund_amount1" />Premium
<input type="radio" name="transfer_to" value="fund_amount2" />Diğer
<input type="radio" name="transfer_to" value="both" CHECKED />Her ikisi
<br/><br/>
<input type="button" class="buttonStyle" value="Talebi Gönder" />
</form>
Sonuç
onkeyup
olay işleyicisini uygulayarak, radyo düğmelerinizin kullanıcı açılır menü ile etkileşimde bulunsa da, klavye ile etkileşimde bulunsa da doğru bir şekilde etkinleştirilip devre dışı bırakıldığından emin olabilirsiniz. Bu küçük ayarlama, kullanıcı deneyimini önemli ölçüde artırabilir ve farklı web tarayıcılarında tutarlı bir etkileşim modeli sunabilir.
Bu güncellenmiş örneği ortamınızda test etmekten çekinmeyin ve daha akıcı, daha güvenilir bir kullanıcı deneyiminin tadını çıkarın!