03.01.2023
Bu yazıda, herhangi bir eklenti veya api kullanmadan iletişim formuna il ilçe seçeneği nasıl eklenir, ona yer vereceğiz.
Bu kod parçasını hem HTML ve JS içerisinde, hem de Contact Form 7 gibi eklentilerde kullanabilirsiniz. Ben bu örnekte formu Contact Form 7 eklentisi ile hazırladım. Formun body’sinin syntax’ini de eklentidekine göre yazdım.
İlk olarak form alanlarında yer alacak seçenekleri oluşturuyoruz.
<label> Ad [text* first-name] </label>
<label> Soyad [text* last-name] </label>
<label> İl [select* city id:form-field-Iller "Seçiniz" ] </label>
<label> İlçe [select* district id:form-field-Ilceler "Seçiniz" ] </label>
Contact Form 7 eklentisi üzerinden bir form oluştururken köşeli parantez içinde [select] kullanarak ile seçim alanı oluşturabiliyorsunuz. ‘id:’ kullanarak formun sayfa içinde alacağı id değerini belirliyorsunuz. Çift tırnak işareti içerisinde o alandaki metni belirtiyorsunuz. Label kullanımı için de form elementini direkt olarak <label> etiketi içine yazmak yetiyor.
Görüleceği gibi, il ve ilçe alanlarının id’lerini form-field-Iller ve form-field-Ilceler olarak belirttik.
Bir sonraki adımda, forma Jquery kütüphanesini ve JSON kodlarını ekleyeceğiz. Bunu yaparken kodları Contact Form 7’deki form alanını oluşturduğunuz yerin başına da koyabilirsiniz, formu oluşturduğunuz PHP dosyasında <script> şeklinde de yazabilirsiniz. Ben bu örnekte ikinci seçeneği kullandım, yani kodları PHP dosyası içerisinde oluşturdum.
İlk önce script etiketi üzerinden Jquery kütüphanesini çağırıyoruz.
src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js">
</script>
İkinci adımda, seçeneklerin derleneceği JSON’u ekliyoruz. Bu şekilde, ileride bir değişiklik yapılması gerekmesi durumunda buradan düzenleme yapılması yeterli olacak.
<script>
var data = [
{
"il": "Ankara",
"ilceleri": [
"Beypazarı",
"Çamlıdere",
"Çankaya",
"Kalecik",
"Kızılcahamam",
"Nallıhan",
"Polatlı"
]
},
{
"il": "İstanbul",
"ilceleri": [
"Adalar",
"Bakırköy",
"Beşiktaş",
"Beykoz",
"Beyoğlu",
"Eyüp",
"Kadıköy",
"Şişli"
]
},
{
"il": "İzmir",
"ilceleri": [
"Bergama",
"Bornova",
"Çeşme",
"Foça",
"Karaburun",
"Karşıyaka",
"Seferihisar",
"Selçuk"
]
}
]
</script>
Son olarak da formdaki değişiklikleri düzenlediğimiz JS fonksiyonunu oluşturuyoruz.
<script>
function search(nameKey, myArray){
for (var i=0; i < myArray.length; i++) {
if (myArray[i].il == nameKey) {
return myArray[i];
}
}
}
$( document ).ready(function() {
$.each(data, function( index, value ) {
$('#form-field-Iller').append($('<option>', {
value: value.il,
text: value.il
}));
});
$("#form-field-Iller").change(function(){
var valueSelected = this.value;
if($('#form-field-Iller').val() != null) {
$('#form-field-Ilceler').html('');
$('#form-field-Ilceler').append($('<option>', {
value: 0,
text: 'Seçiniz'
}));
$('#form-field-Ilceler').prop("disabled", false);
var resultObject = search($('#form-field-Iller').val(), data);
$.each(resultObject.ilceleri, function( index, value ) {
$('#form-field-Ilceler').append($('<option>', {
value: value,
text: value
}));
});
return false;
}
$('#form-field-Ilceler').prop("disabled", true);
});
});
$("#form-field-Ilceler").change(function() {
var IlceSelected = this.value;
});
</script>
Oluşturduğumuz fonksiyonda önce tüm ‘il’ değerlerini bir array içinde oluşturduk. Daha sonra ikinci fonksiyonda #form-field-Iller‘i çağırdık, buradaki value ve text‘i parametreler üzerinden tanımladık. Üçüncü fonksiyonda change event’i kullanarak değişen seçeneğin value’sunu almasını söyledik. ‘$(‘#form-field-Ilceler’).append($(‘<option>’ { text: ‘Seçiniz’ } diyerek, formda henüz bir seçim yapılmamışken metin olarak ‘Seçiniz’ gözükeceğini, yapılan seçimden sonra o değer ile değişeceğini belirttik. Bir diğer önemli bir detay olarak, ‘ $(‘#form-field-Ilceler’).prop(“disabled”, true);’ koduyla, il alanında bir value yokken bu alan için disabled, true dedik, yani seçilemeyeceğini belirttik. Bir il seçilmesi, yani ilk alandan bir value gelmesi halinde buranın disabled, false olarak değişeceğini belirttik. Bu şekilde kullanıcılar forma girdiklerinde ilçe alanı kapalı olacak ve il alanında seçim yapmadan bir ilçe seçemeyecekler. Son fonksiyonda da, ‘il’ alanında yaptığımız gibi yine change event’i üzerinden ‘#form-field-Ilceler’ alanındaki değişen value’yu almasını söyledik.
Türkiye’deki tüm il ve ilçeleri kapsayan kodu Github repo’mda bulabilirsiniz.
Perfist Blog
Benzer Yazılar
GEO (Generative Engine Optimization) Nedir? GEO, yapay zekâ tabanlı arama motorlarında içeriğin daha görünür olması için yapılan optimizasyon çalışmalarıdır. Amacı, yapay zekâların verdiği cevaplarda içeriğin daha sık önerilmesini sağlamaktır. Klasik arama motoru sıralamalarından farklı olarak, yapay zekâ modellerinin içerik okuma ve anlamlandırma biçimine göre içerik üretilir. GEO ve SEO Arasındaki Farklar SEO, Google gibi arama […]
Devamını Oku
Mid Level SEOAnswer Engine Optimization, arama motorlarının ötesinde yapay zekâ destekli yanıt motorlarına içerik uyarlama sürecidir. Kullanıcıların sorularına en net ve doğru yanıtı vermeyi amaçlar. Bu sayede içerikler yalnızca Google’da değil, aynı zamanda ChatGPT, Perplexity gibi yapay zekâ platformlarında da öne çıkar. Geleneksel SEO, web sitelerinin arama motoru sonuç sayfalarında görünürlüğünü artırmaya odaklanır. AEO ise içeriklerin doğrudan […]
Devamını Oku
Mid Level SEOGoogle Analytics 4’te oturumun ne olduğu, oturum sürelerinin neden önemli olduğu, hangi oturum metriklerinin bulunduğu ve bu ayarların nasıl yapılandırılacağını açıklayacağız. GA4’te Oturum Nedir? Oturum, bir kullanıcının web siteniz veya mobil uygulamanızla belirli bir zaman aralığında gerçekleştirdiği tüm etkileşimlerin bütünüdür. Kullanıcı sitenize geldiğinde bir oturum başlar ve belirli bir süre boyunca etkileşim olmazsa (örneğin […]
Devamını Oku
Beginner Level Web/App AnalitiğiSGE (Search Generative Experience), Google’ın arama sonuçlarını yapay zekâ desteğiyle zenginleştirdiği yeni nesil bir deneyimdir. Kullanıcının arama niyetini analiz ederek hızlı, kapsamlı ve bağlamsal yanıtlar sunar. Geleneksel arama motorlarında kullanıcı, farklı kaynaklara tıklayarak bilgi toplar. SGE ise arama sonucu sayfasında özet içerikler, görseller, öneriler ve bağlantılarla bilgiye doğrudan erişim sağlar. Bu deneyim, zaman kazandırır ve […]
Devamını Oku
Mid Level SEO