{"id":33713,"date":"2025-11-06T06:31:05","date_gmt":"2025-11-06T03:31:05","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/"},"modified":"2025-11-06T06:31:05","modified_gmt":"2025-11-06T03:31:05","slug":"jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/","title":{"rendered":"jQuery formBuilder ile Ko\u015fullu Mant\u0131k: 5 Dakikada Dinamik Formlar"},"content":{"rendered":"<p><body><\/p>\n<p>G\u00fcn\u00fcm\u00fczde online formlar, web sitelerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. Ancak bazen bir formun basit bir bilgi toplama arac\u0131 olmaktan \u00f6teye ge\u00e7mesi, kullan\u0131c\u0131n\u0131n verdi\u011fi yan\u0131tlara g\u00f6re ak\u0131ll\u0131ca \u015fekillenmesi gerekebilir. S\u0131k\u0131c\u0131, uzun ve her kullan\u0131c\u0131 i\u00e7in ayn\u0131 g\u00f6r\u00fcnen formlar, d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131n\u0131 d\u00fc\u015f\u00fcrebilir ve kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Peki, kullan\u0131c\u0131n\u0131n ihtiya\u00e7lar\u0131na an\u0131nda uyum sa\u011flayan, sadece ilgili alanlar\u0131 g\u00f6steren ve b\u00f6ylece veri toplama s\u00fcrecini hem sizin hem de kullan\u0131c\u0131 i\u00e7in keyifli hale getiren dinamik formlar\u0131 nas\u0131l olu\u015fturabiliriz? \u0130\u015fte tam da bu noktada, jQuery formBuilder ve ko\u015fullu mant\u0131k devreye giriyor; formlar\u0131n\u0131z\u0131 sadece 5 dakikada ak\u0131ll\u0131 ve interaktif bir aray\u00fcze d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131yor.<\/p>\n<h2>Temel Kavramlar: jQuery formBuilder ve Ko\u015fullu Mant\u0131k Nedir?<\/h2>\n<p>Dinamik formlar\u0131n g\u00fcc\u00fcn\u00fc anlamadan \u00f6nce, temelleri sa\u011flam bir \u015fekilde kavramak \u00f6nemlidir. \u0130lk olarak, jQuery formBuilder nedir ve neden tercih etmeliyiz? jQuery formBuilder, s\u00fcr\u00fckle-b\u0131rak aray\u00fcz\u00fc ile kullan\u0131c\u0131lar\u0131n kolayca formlar olu\u015fturmas\u0131n\u0131 sa\u011flayan, a\u00e7\u0131k kaynakl\u0131 ve kullan\u0131m\u0131 kolay bir JavaScript k\u00fct\u00fcphanesidir. Kod yazmaya gerek kalmadan metin alanlar\u0131, onay kutular\u0131, radyo d\u00fc\u011fmeleri, a\u00e7\u0131l\u0131r men\u00fcler gibi \u00e7e\u015fitli form \u00f6\u011felerini eklemenize, d\u00fczenlemenize ve s\u0131ralaman\u0131za olanak tan\u0131r. Olu\u015fturdu\u011funuz formlar\u0131 JSON format\u0131nda d\u0131\u015fa aktarabilir, b\u00f6ylece onlar\u0131 uygulaman\u0131zda kolayca kullanabilirsiniz. Geli\u015ftiriciler i\u00e7in h\u0131zl\u0131 prototipleme ve son kullan\u0131c\u0131lar i\u00e7in sezgisel bir deneyim sunmas\u0131yla \u00f6n plana \u00e7\u0131kar. \u00d6zellikle frontend geli\u015ftiricilerinin zaman\u0131n\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde k\u0131salt\u0131r ve form tasar\u0131m s\u00fcre\u00e7lerini basitle\u015ftirir. \u00c7ok say\u0131da haz\u0131r bile\u015fen sunmas\u0131 sayesinde, genellikle s\u0131f\u0131rdan bir form yap\u0131s\u0131 kurmak yerine, mevcut bile\u015fenleri kullanarak formlar\u0131n\u0131z\u0131 h\u0131zla in\u015fa edebilirsiniz. Ayr\u0131ca, esnek yap\u0131s\u0131 sayesinde \u00f6zel form alanlar\u0131 veya farkl\u0131 tasar\u0131m gereksinimleri i\u00e7in de kolayca geni\u015fletilebilir.<\/p>\n<p>Peki, ko\u015fullu mant\u0131k nedir ve formBuilder ile ili\u015fkisi nedir? Ko\u015fullu mant\u0131k, bir formdaki belirli alanlar\u0131n veya b\u00f6l\u00fcmlerin, kullan\u0131c\u0131n\u0131n daha \u00f6nceki bir soruya verdi\u011fi cevaba g\u00f6re g\u00f6r\u00fcnt\u00fclenip gizlenmesini, etkinle\u015ftirilip devre d\u0131\u015f\u0131 b\u0131rak\u0131lmas\u0131n\u0131 veya de\u011ferlerinin de\u011fi\u015ftirilmesini sa\u011flayan bir dizi kurald\u0131r. \u00d6rne\u011fin, bir kay\u0131t formunda &#8220;\u00d6\u011frenci misiniz?&#8221; sorusuna &#8220;Evet&#8221; cevab\u0131 verildi\u011finde &#8220;\u00d6\u011frenci Kimlik Numaras\u0131&#8221; alan\u0131 otomatik olarak g\u00f6r\u00fcn\u00fcr hale gelebilir. E\u011fer &#8220;Hay\u0131r&#8221; cevab\u0131 verilirse bu alan gizli kal\u0131r. Bu sayede, kullan\u0131c\u0131lar yaln\u0131zca kendileriyle ilgili olan sorular\u0131 g\u00f6r\u00fcr, bu da formun daha k\u0131sa, daha az korkutucu ve doldurmas\u0131 daha kolay g\u00f6r\u00fcnmesini sa\u011flar. Ko\u015fullu mant\u0131k, sadece formun g\u00f6r\u00fcn\u00fcm\u00fcn\u00fc de\u011fil, ayn\u0131 zamanda toplanan verinin kalitesini de art\u0131r\u0131r. Gereksiz veya alakas\u0131z bilgilerin toplanmas\u0131n\u0131 engelleyerek, veri analiz s\u00fcre\u00e7lerini basitle\u015ftirir ve hata olas\u0131l\u0131\u011f\u0131n\u0131 azalt\u0131r. jQuery formBuilder&#8217;\u0131n temel s\u00fcr\u00fcm\u00fcnde ko\u015fullu mant\u0131k yerle\u015fik olarak gelmese de, topluluk taraf\u0131ndan geli\u015ftirilen veya \u00fc\u00e7\u00fcnc\u00fc taraf eklentileri ile bu \u00f6zelli\u011fi kolayca entegre edebilirsiniz. Bu eklentiler, formBuilder&#8217;\u0131n JSON yap\u0131s\u0131n\u0131 kullanarak hangi alan\u0131n hangi ko\u015fula g\u00f6re davranaca\u011f\u0131n\u0131 belirlemenize olanak tan\u0131r. B\u00f6ylece, hem form olu\u015fturma kolayl\u0131\u011f\u0131n\u0131 hem de dinamik etkile\u015fim g\u00fcc\u00fcn\u00fc bir arada kullanm\u0131\u015f olursunuz. Bu kombinasyon, kullan\u0131c\u0131 deneyimini zirveye ta\u015f\u0131yan, ak\u0131ll\u0131 ve sezgisel web formlar\u0131 yaratman\u0131n anahtar\u0131d\u0131r.<\/p>\n<h3>formBuilder&#8217;\u0131 Projemize H\u0131zl\u0131ca Entegre Etme ve Temel Kullan\u0131m\u0131 Nas\u0131l Yap\u0131l\u0131r?<\/h3>\n<p>jQuery formBuilder&#8217;\u0131 projenize dahil etmek olduk\u00e7a basittir ve genellikle birka\u00e7 ad\u0131mda tamamlan\u0131r. Bu b\u00f6l\u00fcmde, formBuilder&#8217;\u0131 projenize nas\u0131l entegre edece\u011finizi ve temel bir form olu\u015fturma i\u015flemini nas\u0131l ger\u00e7ekle\u015ftirece\u011finizi ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z. Bu ad\u0131mlar, ko\u015fullu mant\u0131k ekleme s\u00fcrecine ba\u015flamadan \u00f6nceki haz\u0131rl\u0131k a\u015famas\u0131d\u0131r ve herhangi bir formBuilder projesi i\u00e7in standart bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<p>\u0130lk olarak, formBuilder&#8217;\u0131n \u00e7al\u0131\u015fabilmesi i\u00e7in jQuery k\u00fct\u00fcphanesine ihtiyac\u0131m\u0131z var. Bu nedenle, projenizin HTML dosyas\u0131n\u0131n <code><head><\/code> b\u00f6l\u00fcm\u00fcne veya <code><\/body><\/code> kapan\u0131\u015f etiketinden hemen \u00f6nce a\u015fa\u011f\u0131daki CDN ba\u011flant\u0131lar\u0131n\u0131 ekleyerek jQuery&#8217;yi dahil etmelisiniz:<\/p>\n<pre><code>\n<!-- jQuery CDN -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jquery\/3.7.1\/jquery.min.js\"><\/script>\n  <\/pre>\n<p><\/code><\/p>\n<p>jQuery dahil edildikten sonra, formBuilder'\u0131n kendisini projenize eklemelisiniz. Bunun i\u00e7in yine CDN ba\u011flant\u0131lar\u0131n\u0131 kullanabilirsiniz:<\/p>\n<pre><code>\n<!-- formBuilder CSS -->\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jqueryui\/1.13.2\/themes\/base\/jquery-ui.min.css\">\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/formbuilder\/4.1.0\/form-builder.min.css\">\n\n<!-- formBuilder JS -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jqueryui\/1.13.2\/jquery-ui.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/formbuilder\/4.1.0\/form-builder.min.js\"><\/script>\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/formbuilder\/4.1.0\/form-render.min.js\"><\/script>\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu ba\u011flant\u0131lar\u0131 ekledikten sonra, formBuilder'\u0131 kullanmaya haz\u0131r\u0131z. \u015eimdi HTML sayfan\u0131zda, formBuilder'\u0131n aray\u00fcz\u00fcn\u00fc olu\u015fturaca\u011f\u0131m\u0131z bir <code>div<\/code> elementi tan\u0131mlamam\u0131z gerekiyor:<\/p>\n<pre><code>\n<div id=\"form-builder-area\"><\/div>\n  <\/pre>\n<p><\/code><\/p>\n<p>Son olarak, bu <code>div<\/code> elementini formBuilder'a ba\u011flamak i\u00e7in bir JavaScript kodu yazmam\u0131z gerekiyor. Bu kodu da HTML sayfan\u0131zdaki <code><\/body><\/code> etiketinden hemen \u00f6nce ekleyebilirsiniz:<\/p>\n<pre><code>\n<script>\n  jQuery(function($) {\n    $('#form-builder-area').formBuilder({\n      \/\/ Opsiyonel konfig\u00fcrasyonlar buraya eklenebilir\n      disableFields: ['autocomplete', 'hidden', 'button'], \/\/ \u0130stenmeyen alanlar\u0131 devre d\u0131\u015f\u0131 b\u0131rakma \u00f6rne\u011fi\n      defaultFields: [ \/\/ Ba\u015flang\u0131\u00e7ta formda olacak varsay\u0131lan alanlar\n        {\n          type: 'text',\n          label: 'Ad\u0131n\u0131z',\n          name: 'user-name',\n          placeholder: 'Ad\u0131n\u0131z\u0131 giriniz'\n        },\n        {\n          type: 'email',\n          label: 'E-posta Adresiniz',\n          name: 'user-email',\n          placeholder: 'E-posta adresinizi giriniz'\n        }\n      ]\n    });\n  });\n<\/script>\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu kod blo\u011fu, sayfa y\u00fcklendi\u011finde <code>form-builder-area<\/code> ID'sine sahip <code>div<\/code> elementini bir formBuilder \u00f6rne\u011fine d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. <code>disableFields<\/code> gibi opsiyonel ayarlar ile formBuilder aray\u00fcz\u00fcnde belirli alan t\u00fcrlerini devre d\u0131\u015f\u0131 b\u0131rakabilir veya <code>defaultFields<\/code> ile ba\u015flang\u0131\u00e7ta baz\u0131 alanlar\u0131n otomatik olarak eklenmesini sa\u011flayabilirsiniz. Art\u0131k, web taray\u0131c\u0131n\u0131zda bu HTML dosyas\u0131n\u0131 a\u00e7t\u0131\u011f\u0131n\u0131zda, sol tarafta form elemanlar\u0131n\u0131 g\u00f6rece\u011finiz ve sa\u011f tarafta s\u00fcr\u00fckleyip b\u0131rakarak formunuzu olu\u015fturabilece\u011finiz bir aray\u00fczle kar\u015f\u0131la\u015facaks\u0131n\u0131z. Bu temel kurulum, ko\u015fullu mant\u0131k eklentisini entegre etmek ve dinamik formlar olu\u015fturmak i\u00e7in sa\u011flam bir zemin haz\u0131rlar. Bu a\u015famadan sonra, eklentilerle formunuzun i\u015flevselli\u011fini daha da art\u0131rabilir ve kullan\u0131c\u0131lar\u0131n etkile\u015fimli bir deneyim ya\u015famas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<h2>Ko\u015fullu Mant\u0131k Eklentisini Entegre Etme ve \u0130lk Ad\u0131mlar Nas\u0131l At\u0131l\u0131r?<\/h2>\n<p>jQuery formBuilder'\u0131n temel kurulumunu tamamlad\u0131\u011f\u0131m\u0131za g\u00f6re, \u015fimdi s\u0131ra formumuza ak\u0131ll\u0131 bir boyut kazand\u0131racak olan ko\u015fullu mant\u0131\u011f\u0131 entegre etmeye geldi. formBuilder, \u00e7ekirdek olarak bu \u00f6zelli\u011fi sunmasa da, esnek yap\u0131s\u0131 sayesinde eklentilerle bu bo\u015flu\u011fu doldurabiliriz. En pop\u00fcler ve yayg\u0131n kullan\u0131lan eklentilerden biri, formBuilder'\u0131n <a href=\"https:\/\/formbuilder.online\/docs\/addons\/conditional-logic\/\" target=\"_blank\">resmi eklenti sayfas\u0131nda<\/a> belirtilen veya topluluk taraf\u0131ndan geli\u015ftirilen \"conditional logic\" eklentileridir. Biz bu makalede, genellikle jQuery formBuilder ile uyumlu \u00e7al\u0131\u015fan genel bir \"conditional logic\" eklentisi entegrasyonunu ele alaca\u011f\u0131z. Bu t\u00fcr eklentiler genellikle formBuilder'\u0131n JSON \u00e7\u0131kt\u0131 format\u0131n\u0131 kullanarak hangi alanlar\u0131n hangi ko\u015fullara g\u00f6re davranaca\u011f\u0131n\u0131 belirler.<\/p>\n<p>\u0130lk ad\u0131m, ko\u015fullu mant\u0131k eklentisinin dosyalar\u0131n\u0131 projenize dahil etmektir. Genellikle bu eklentiler, ana formBuilder script'inden sonra y\u00fcklenmelidir. E\u011fer resmi bir eklenti kullan\u0131yorsan\u0131z, belgelerini takip ederek do\u011fru dosyalar\u0131 ve y\u00fckleme s\u0131ras\u0131n\u0131 bulabilirsiniz. Varsay\u0131msal bir senaryo i\u00e7in, a\u015fa\u011f\u0131daki gibi bir script ba\u011flant\u0131s\u0131 eklemeniz gerekebilir:<\/p>\n<pre><code>\n<!-- formBuilder ve formRender scriptlerinden sonra -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/formbuilder-conditional-logic@VERSION\/dist\/conditional-logic.min.js\"><\/script>\n  <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki URL bir \u00f6rnektir ve ger\u00e7ek eklentinin CDN veya yerel yoluna g\u00f6re de\u011fi\u015fiklik g\u00f6sterecektir. Eklentiyi projenize dahil ettikten sonra, formBuilder'\u0131 ba\u015flat\u0131rken veya formun render edildi\u011fi a\u015famada ko\u015fullu mant\u0131k yap\u0131land\u0131rmas\u0131n\u0131 sa\u011flaman\u0131z gerekir. Bu eklentiler genellikle formBuilder'\u0131n kendi opsiyonlar\u0131na bir <code>conditionals<\/code> veya benzeri bir anahtar eklemenize olanak tan\u0131r.<\/p>\n<p>Ko\u015fullu mant\u0131k eklentisini kullanman\u0131n temel prensibi, hangi alan\u0131n hangi ko\u015fula g\u00f6re (ba\u015fka bir alan\u0131n de\u011feri) nas\u0131l davranaca\u011f\u0131n\u0131 (g\u00f6ster\/gizle, etkinle\u015ftir\/devre d\u0131\u015f\u0131 b\u0131rak) belirten kurallar dizisi olu\u015fturmakt\u0131r. Bu kurallar genellikle JSON format\u0131nda tan\u0131mlan\u0131r ve her kural bir tetikleyici alan (kontrol alan\u0131), bir operat\u00f6r (e\u015fit, e\u015fit de\u011fil, b\u00fcy\u00fck, k\u00fc\u00e7\u00fck vb.) ve bir hedef alan (etkilenecek alan) i\u00e7erir. \u00d6rne\u011fin, bir \"Ya\u015f\u0131n\u0131z 18'den b\u00fcy\u00fck m\u00fc?\" sorusuna \"Evet\" cevab\u0131 verildi\u011finde \"Alkol Tercihleri\" alan\u0131n\u0131n g\u00f6r\u00fcn\u00fcr olmas\u0131n\u0131 isteyebilirsiniz. Bu durumda, \"Ya\u015f\u0131n\u0131z 18'den b\u00fcy\u00fck m\u00fc?\" alan\u0131 tetikleyici, \"e\u015fit\" operat\u00f6r\u00fc, \"Evet\" de\u011feri ve \"Alkol Tercihleri\" alan\u0131 ise hedef alan olacakt\u0131r.<\/p>\n<pre><code>\n<script>\n  jQuery(function($) {\n    const formBuilderInstance = $('#form-builder-area').formBuilder({\n      \/\/ formBuilder'\u0131n temel konfig\u00fcrasyonu\n    });\n\n    \/\/ FormBuilder aray\u00fcz\u00fcnde olu\u015fturulan form verisini alal\u0131m (JSON format\u0131nda)\n    const formData = formBuilderInstance.actions.getData('json');\n\n    \/\/ E\u011fer bir render a\u015famas\u0131nda ko\u015fullu mant\u0131k uygulamak istiyorsak:\n    $('#form-render-area').formRender({\n      formData: formData,\n      \/\/ Ko\u015fullu mant\u0131k eklentisi entegrasyonu (\u00f6rnek yap\u0131)\n      onRender: function(renderInstance) {\n        \/\/ Form alanlar\u0131 render edildikten sonra ko\u015fullu mant\u0131\u011f\u0131 uygulayal\u0131m\n        \/\/ Bu k\u0131s\u0131m eklentinin API'sine g\u00f6re de\u011fi\u015fir\n        renderInstance.applyConditionalLogic({\n          rules: [\n            {\n              field: 'cinsiyet-secimi', \/\/ Kontrol edilecek alan\u0131n 'name' \u00f6zniteli\u011fi\n              value: 'kadin',           \/\/ Kontrol alan\u0131n\u0131n de\u011feri\n              action: 'show',           \/\/ Yap\u0131lacak eylem: g\u00f6ster\n              target: 'gebelik-durumu'   \/\/ Hedef alan\u0131n 'name' \u00f6zniteli\u011fi\n            },\n            {\n              field: 'ogrenci-mi',\n              value: 'evet',\n              action: 'show',\n              target: 'okul-adi'\n            }\n          ]\n        });\n      }\n    });\n  });\n<\/script>\n  <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnek kod, <code>formRender<\/code> kullan\u0131l\u0131rken <code>onRender<\/code> callback'i i\u00e7erisinde ko\u015fullu mant\u0131k eklentisinin <code>applyConditionalLogic<\/code> metodunu \u00e7a\u011f\u0131rd\u0131\u011f\u0131m\u0131z\u0131 varsayar. <code>rules<\/code> dizisi i\u00e7erisinde her bir obje, bir ko\u015fullu mant\u0131k kural\u0131n\u0131 temsil eder. <code>field<\/code> \u00f6zelli\u011fi tetikleyici alan\u0131n ad\u0131n\u0131 (name attribute), <code>value<\/code> \u00f6zelli\u011fi bu alan\u0131n hangi de\u011feri ald\u0131\u011f\u0131nda kural\u0131n tetiklenece\u011fini, <code>action<\/code> \u00f6zelli\u011fi ise hedef alana uygulanacak eylemi (\u00f6rne\u011fin, 'show' veya 'hide') ve <code>target<\/code> \u00f6zelli\u011fi de etkilenecek alan\u0131n ad\u0131n\u0131 belirtir. Bu yap\u0131land\u0131rma, formunuzun belirli bir duruma g\u00f6re ak\u0131ll\u0131ca tepki vermesini sa\u011flar ve kullan\u0131c\u0131lar\u0131n gereksiz bilgileri doldurmas\u0131n\u0131 engelleyerek daha temiz ve odakl\u0131 bir deneyim sunar. Ko\u015fullu mant\u0131k eklentisinin do\u011fru \u015fekilde entegre edilmesi, formlar\u0131n\u0131z\u0131n interaktifli\u011fini ve kullan\u0131c\u0131 memnuniyetini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131racakt\u0131r.<\/p>\n<div class=\"expert-tip\">\n    Uzman \u0130pucu: Ko\u015fullu mant\u0131k kurallar\u0131n\u0131z\u0131 tan\u0131mlarken, alan adlar\u0131n\u0131 (name attribute) benzersiz ve a\u00e7\u0131klay\u0131c\u0131 tutmaya \u00f6zen g\u00f6sterin. Bu, \u00f6zellikle karma\u015f\u0131k formlarda kurallar\u0131 y\u00f6netmeyi ve hata ay\u0131klamay\u0131 \u00e7ok daha kolay hale getirecektir. Ayr\u0131ca, test s\u00fcre\u00e7lerinde tutarl\u0131l\u0131k sa\u011flar.\n  <\/div>\n<h2>Ger\u00e7ek D\u00fcnya Senaryosu: Bir Etkinlik Kay\u0131t Formunda Ko\u015fullu Mant\u0131k Uygulamas\u0131 Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>\u015eimdi teoriden prati\u011fe ge\u00e7elim ve ko\u015fullu mant\u0131\u011f\u0131n ger\u00e7ek bir senaryoda nas\u0131l hayat buldu\u011funu g\u00f6relim. Bir etkinlik kay\u0131t formu, ko\u015fullu mant\u0131k uygulamalar\u0131 i\u00e7in harika bir \u00f6rnektir. Kat\u0131l\u0131mc\u0131lar\u0131n farkl\u0131 stat\u00fclerine veya tercihlerine g\u00f6re farkl\u0131 bilgiler toplamak isteyebiliriz. \u00d6rne\u011fin, bir konferans kay\u0131t formunda, \u00f6\u011frencilere \u00f6zel indirimler veya ek oturum se\u00e7enekleri sunulurken, genel kat\u0131l\u0131mc\u0131lardan farkl\u0131 bilgiler talep edilebilir. Ayr\u0131ca, yurt d\u0131\u015f\u0131ndan gelen kat\u0131l\u0131mc\u0131lar i\u00e7in konaklama veya vize deste\u011fi gibi ek sorular sorulabilir. Bu senaryo, formumuzun dinamik olarak \u015fekillenmesi i\u00e7in birden fazla ko\u015fula ihtiya\u00e7 duydu\u011fumuz anlam\u0131na gelir.<\/p>\n<h3>Senaryo Detaylar\u0131:<\/h3>\n<ol>\n<li>Kullan\u0131c\u0131 \"\u00d6\u011frenci misiniz?\" sorusuna \"Evet\" derse, \"\u00d6\u011frenci Kimlik Numaras\u0131\" ve \"Okul Ad\u0131\" alanlar\u0131 g\u00f6r\u00fcn\u00fcr hale gelsin.<\/li>\n<li>Kullan\u0131c\u0131 \"Yurt d\u0131\u015f\u0131ndan m\u0131 kat\u0131l\u0131yorsunuz?\" sorusuna \"Evet\" derse, \"\u00dclke\" ve \"Vize Deste\u011fine \u0130htiyac\u0131n\u0131z Var m\u0131?\" alanlar\u0131 g\u00f6r\u00fcn\u00fcr hale gelsin.<\/li>\n<li>E\u011fer kullan\u0131c\u0131 \"Vize Deste\u011fine \u0130htiyac\u0131n\u0131z Var m\u0131?\" sorusuna \"Evet\" derse, \"Pasaport Numaras\u0131\" ve \"Uyruk\" alanlar\u0131 da g\u00f6r\u00fcn\u00fcr hale gelsin.<\/li>\n<\/ol>\n<p>Bu senaryoyu uygulamak i\u00e7in, jQuery formBuilder'\u0131 kullanarak \u00f6ncelikle ilgili alanlar\u0131 olu\u015fturmam\u0131z ve ard\u0131ndan ko\u015fullu mant\u0131k eklentisi arac\u0131l\u0131\u011f\u0131yla kurallar\u0131 tan\u0131mlamam\u0131z gerekecek. \u00d6ncelikle formBuilder ile formumuzu g\u00f6rsel olarak tasarlad\u0131\u011f\u0131m\u0131z\u0131 ve a\u015fa\u011f\u0131daki alanlar\u0131 olu\u015fturdu\u011fumuzu varsayal\u0131m:<\/p>\n<ul>\n<li><code>text<\/code> alan\u0131: <code>ad-soyad<\/code> (Ad Soyad)<\/li>\n<li><code>email<\/code> alan\u0131: <code>email-adres<\/code> (E-posta Adresi)<\/li>\n<li><code>radio-group<\/code> alan\u0131: <code>ogrenci-mi<\/code> (\u00d6\u011frenci misiniz?) - Se\u00e7enekler: Evet, Hay\u0131r<\/li>\n<li><code>text<\/code> alan\u0131: <code>ogrenci-kimlik<\/code> (\u00d6\u011frenci Kimlik Numaras\u0131) - Ba\u015flang\u0131\u00e7ta gizli<\/li>\n<li><code>text<\/code> alan\u0131: <code>okul-adi<\/code> (Okul Ad\u0131) - Ba\u015flang\u0131\u00e7ta gizli<\/li>\n<li><code>radio-group<\/code> alan\u0131: <code>yurtdisi-katilimci<\/code> (Yurt d\u0131\u015f\u0131ndan m\u0131 kat\u0131l\u0131yorsunuz?) - Se\u00e7enekler: Evet, Hay\u0131r<\/li>\n<li><code>select<\/code> alan\u0131: <code>ulke<\/code> (\u00dclke) - Ba\u015flang\u0131\u00e7ta gizli (bir\u00e7ok \u00fclke se\u00e7ene\u011fi ile)<\/li>\n<li><code>radio-group<\/code> alan\u0131: <code>vize-destegi<\/code> (Vize Deste\u011fine \u0130htiyac\u0131n\u0131z Var m\u0131?) - Se\u00e7enekler: Evet, Hay\u0131r - Ba\u015flang\u0131\u00e7ta gizli<\/li>\n<li><code>text<\/code> alan\u0131: <code>pasaport-no<\/code> (Pasaport Numaras\u0131) - Ba\u015flang\u0131\u00e7ta gizli<\/li>\n<li><code>text<\/code> alan\u0131: <code>uyruk<\/code> (Uyruk) - Ba\u015flang\u0131\u00e7ta gizli<\/li>\n<\/ul>\n<p>FormBuilder aray\u00fcz\u00fcnde bu alanlar\u0131 olu\u015fturduktan sonra, form verisini JSON format\u0131nda al\u0131p <code>formRender<\/code> ile g\u00f6sterirken ko\u015fullu mant\u0131k kurallar\u0131n\u0131 uygulayaca\u011f\u0131z. \u0130\u015fte bu kurallar\u0131n JavaScript kodu:<\/p>\n<pre><code>\n<script>\n  jQuery(function($) {\n    const formData = [\n      \/\/ Bu k\u0131s\u0131m, formBuilder'dan elde etti\u011finiz ger\u00e7ek JSON verisi olacakt\u0131r.\n      \/\/ \u00d6rnek olmas\u0131 a\u00e7\u0131s\u0131ndan baz\u0131 alanlar\u0131 manuel ekleyelim.\n      {\n        type: \"text\",\n        label: \"Ad\u0131n\u0131z Soyad\u0131n\u0131z\",\n        className: \"form-control\",\n        name: \"ad-soyad\"\n      },\n      {\n        type: \"email\",\n        label: \"E-posta Adresiniz\",\n        className: \"form-control\",\n        name: \"email-adres\"\n      },\n      {\n        type: \"radio-group\",\n        label: \"\u00d6\u011frenci misiniz?\",\n        className: \"form-control\",\n        name: \"ogrenci-mi\",\n        values: [\n          { label: \"Evet\", value: \"evet\", selected: false },\n          { label: \"Hay\u0131r\", value: \"hayir\", selected: true }\n        ]\n      },\n      {\n        type: \"text\",\n        label: \"\u00d6\u011frenci Kimlik Numaras\u0131\",\n        className: \"form-control conditional-field\",\n        name: \"ogrenci-kimlik\",\n        placeholder: \"\u00d6\u011frenci Kimlik No\",\n        hidden: true \/\/ Ba\u015flang\u0131\u00e7ta gizli\n      },\n      {\n        type: \"text\",\n        label: \"Okul Ad\u0131\",\n        className: \"form-control conditional-field\",\n        name: \"okul-adi\",\n        placeholder: \"Okulunuzun Ad\u0131\",\n        hidden: true \/\/ Ba\u015flang\u0131\u00e7ta gizli\n      },\n      {\n        type: \"radio-group\",\n        label: \"Yurt d\u0131\u015f\u0131ndan m\u0131 kat\u0131l\u0131yorsunuz?\",\n        className: \"form-control\",\n        name: \"yurtdisi-katilimci\",\n        values: [\n          { label: \"Evet\", value: \"evet\", selected: false },\n          { label: \"Hay\u0131r\", value: \"hayir\", selected: true }\n        ]\n      },\n      {\n        type: \"select\",\n        label: \"\u00dclke\",\n        className: \"form-control conditional-field\",\n        name: \"ulke\",\n        values: [\n          { label: \"T\u00fcrkiye\", value: \"turkiye\" },\n          { label: \"Almanya\", value: \"almanya\" },\n          { label: \"ABD\", value: \"abd\" }\n        ],\n        hidden: true \/\/ Ba\u015flang\u0131\u00e7ta gizli\n      },\n      {\n        type: \"radio-group\",\n        label: \"Vize Deste\u011fine \u0130htiyac\u0131n\u0131z Var m\u0131?\",\n        className: \"form-control conditional-field\",\n        name: \"vize-destegi\",\n        values: [\n          { label: \"Evet\", value: \"evet\", selected: false },\n          { label: \"Hay\u0131r\", value: \"hayir\", selected: true }\n        ],\n        hidden: true \/\/ Ba\u015flang\u0131\u00e7ta gizli\n      },\n      {\n        type: \"text\",\n        label: \"Pasaport Numaras\u0131\",\n        className: \"form-control conditional-field\",\n        name: \"pasaport-no\",\n        placeholder: \"Pasaport Numaran\u0131z\",\n        hidden: true \/\/ Ba\u015flang\u0131\u00e7ta gizli\n      },\n      {\n        type: \"text\",\n        label: \"Uyruk\",\n        className: \"form-control conditional-field\",\n        name: \"uyruk\",\n        placeholder: \"Uyru\u011funuz\",\n        hidden: true \/\/ Ba\u015flang\u0131\u00e7ta gizli\n      }\n    ];\n\n    \/\/ Formu render etmek i\u00e7in bir div\n    $('<div\/>', {\n      id: 'rendered-form'\n    }).appendTo('body');\n\n    const renderInstance = $('#rendered-form').formRender({\n      formData: formData\n    });\n\n    \/\/ Ko\u015fullu Mant\u0131k Kurallar\u0131\n    renderInstance.applyConditionalLogic({\n      rules: [\n        \/\/ Kural 1: \u00d6\u011frenci misiniz? -> \u00d6\u011frenci Kimlik No, Okul Ad\u0131\n        {\n          field: 'ogrenci-mi',\n          value: 'evet',\n          action: 'show',\n          targets: ['ogrenci-kimlik', 'okul-adi']\n        },\n        {\n          field: 'ogrenci-mi',\n          value: 'hayir',\n          action: 'hide',\n          targets: ['ogrenci-kimlik', 'okul-adi']\n        },\n        \/\/ Kural 2: Yurt d\u0131\u015f\u0131ndan m\u0131 kat\u0131l\u0131yorsunuz? -> \u00dclke, Vize Deste\u011fi\n        {\n          field: 'yurtdisi-katilimci',\n          value: 'evet',\n          action: 'show',\n          targets: ['ulke', 'vize-destegi']\n        },\n        {\n          field: 'yurtdisi-katilimci',\n          value: 'hayir',\n          action: 'hide',\n          targets: ['ulke', 'vize-destegi']\n        },\n        \/\/ Kural 3: Vize Deste\u011fine \u0130htiyac\u0131n\u0131z Var m\u0131? -> Pasaport No, Uyruk\n        {\n          field: 'vize-destegi',\n          value: 'evet',\n          action: 'show',\n          targets: ['pasaport-no', 'uyruk']\n        },\n        {\n          field: 'vize-destegi',\n          value: 'hayir',\n          action: 'hide',\n          targets: ['pasaport-no', 'uyruk']\n        }\n      ]\n    });\n\n    \/\/ Not: Bu \u00f6rnek, varsay\u0131msal bir applyConditionalLogic metodunu kullanmaktad\u0131r.\n    \/\/ Ger\u00e7ek eklentinin API'si farkl\u0131l\u0131k g\u00f6sterebilir.\n    \/\/ Eklentinin dok\u00fcmantasyonunu mutlaka kontrol ediniz.\n  });\n<\/script>\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu kod blo\u011funda, <code>formData<\/code> dizisi formBuilder taraf\u0131ndan olu\u015fturulan ve daha sonra <code>formRender<\/code> taraf\u0131ndan yorumlanacak olan form yap\u0131s\u0131n\u0131 temsil eder. Her bir alan\u0131n <code>name<\/code> \u00f6zelli\u011fi, ko\u015fullu mant\u0131k kurallar\u0131nda hedef veya tetikleyici olarak kullan\u0131laca\u011f\u0131 i\u00e7in kritik \u00f6neme sahiptir. <code>hidden: true<\/code> \u00f6zelli\u011fi ile ba\u015flang\u0131\u00e7ta gizli kalacak alanlar\u0131 belirtiyoruz. <code>renderInstance.applyConditionalLogic<\/code> metoduna iletti\u011fimiz <code>rules<\/code> dizisi, tan\u0131mlad\u0131\u011f\u0131m\u0131z t\u00fcm ko\u015fullu mant\u0131k kurallar\u0131n\u0131 i\u00e7erir. Her bir kural, belirli bir <code>field<\/code>'\u0131n (tetikleyici alan) belirli bir <code>value<\/code>'yu (de\u011fer) ald\u0131\u011f\u0131nda, hangi <code>targets<\/code> (hedef alanlar) \u00fczerinde hangi <code>action<\/code> (eylem - g\u00f6ster\/gizle) uygulanaca\u011f\u0131n\u0131 belirtir. Bu sayede, kullan\u0131c\u0131 formla etkile\u015fime girdik\u00e7e, form dinamik olarak \u015fekillenir ve sadece ilgili sorular\u0131 g\u00f6sterir. Bu, hem veri giri\u015fini kolayla\u015ft\u0131r\u0131r hem de karma\u015f\u0131k kay\u0131t s\u00fcre\u00e7lerinde kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirir.<\/p>\n<h2>Birden Fazla Ko\u015ful ve Kompleks Senaryolar\u0131 Y\u00f6netmek: AND\/OR Operat\u00f6rleri Nas\u0131l Kullan\u0131l\u0131r?<\/h2>\n<p>Basit ko\u015fullu mant\u0131k kurallar\u0131, belirli bir alana verilen tek bir cevaba g\u00f6re ba\u015fka bir alan\u0131 g\u00f6sterip gizlemek i\u00e7in yeterli olabilir. Ancak ger\u00e7ek d\u00fcnya senaryolar\u0131nda, birden fazla ko\u015fulun ayn\u0131 anda kar\u015f\u0131lanmas\u0131 veya alternatif ko\u015fullardan birinin yeterli olmas\u0131 gibi daha karma\u015f\u0131k durumlarla kar\u015f\u0131la\u015fabiliriz. \u0130\u015fte bu noktada, ko\u015fullu mant\u0131k eklentilerinin sundu\u011fu <code>AND<\/code> (ve) ve <code>OR<\/code> (veya) operat\u00f6rleri devreye girer. Bu mant\u0131ksal operat\u00f6rler sayesinde, formunuzun karar mekanizmas\u0131n\u0131 daha da esnek ve g\u00fc\u00e7l\u00fc hale getirebilirsiniz.<\/p>\n<p>Diyelim ki, \u00f6nceki etkinlik kay\u0131t formumuzdaki senaryoyu geni\u015fletmek istiyoruz. Yeni bir gereksinimimiz var: \"Sadece \u00f6\u011frenci olan VE yurt d\u0131\u015f\u0131ndan kat\u0131lan ki\u015filer i\u00e7in burs ba\u015fvurusu alan\u0131 g\u00f6r\u00fcn\u00fcr olsun.\" Bu, iki farkl\u0131 ko\u015fulun (<code>ogrenci-mi<\/code> alan\u0131n\u0131n de\u011feri \"evet\" OLMALI VE <code>yurtdisi-katilimci<\/code> alan\u0131n\u0131n de\u011feri \"evet\" OLMALI) ayn\u0131 anda do\u011fru olmas\u0131n\u0131 gerektiren bir <code>AND<\/code> operat\u00f6r\u00fc kullan\u0131m \u00f6rne\u011fidir. Geleneksel ko\u015fullu mant\u0131k eklentileri, bu t\u00fcr senaryolar\u0131 desteklemek i\u00e7in farkl\u0131 yap\u0131land\u0131rma se\u00e7enekleri sunar. Genellikle, bir kural nesnesine ek bir <code>condition<\/code> veya <code>operator<\/code> \u00f6zelli\u011fi eklenerek bu sa\u011flan\u0131r.<\/p>\n<p>\u015eimdi bu karma\u015f\u0131k senaryoyu nas\u0131l ele alaca\u011f\u0131m\u0131za dair bir kod \u00f6rne\u011fi olu\u015ftural\u0131m. \u00d6ncelikle, formumuza \"Burs Ba\u015fvurusu\" ad\u0131nda yeni bir metin alan\u0131 ekledi\u011fimizi varsayal\u0131m. Bu alan ba\u015flang\u0131\u00e7ta gizli olacakt\u0131r:<\/p>\n<ul>\n<li><code>textarea<\/code> alan\u0131: <code>burs-basvurusu<\/code> (Burs Ba\u015fvurusu Metni) - Ba\u015flang\u0131\u00e7ta gizli<\/li>\n<\/ul>\n<p>\u015eimdi, bu alan\u0131n ne zaman g\u00f6r\u00fcn\u00fcr olaca\u011f\u0131n\u0131 belirleyen ko\u015fullu mant\u0131k kural\u0131n\u0131 olu\u015ftural\u0131m. Eklentinin API'sine ba\u011fl\u0131 olarak, kurallar\u0131n\u0131z a\u015fa\u011f\u0131daki gibi bir yap\u0131ya sahip olabilir:<\/p>\n<pre><code>\n<script>\n  jQuery(function($) {\n    \/\/ ... (\u00d6nceki form verisi ve renderInstance tan\u0131m\u0131 burada yer alacak) ...\n\n    renderInstance.applyConditionalLogic({\n      rules: [\n        \/\/ ... (\u00d6nceki basit kurallar burada yer alacak) ...\n\n        \/\/ Yeni Kural: AND Operat\u00f6r\u00fc ile burs-basvurusu alan\u0131\n        {\n          conditions: [ \/\/ Birden fazla ko\u015fulu i\u00e7eren bir dizi\n            {\n              field: 'ogrenci-mi',\n              value: 'evet',\n              operator: 'equal' \/\/ E\u015fitlik operat\u00f6r\u00fc\n            },\n            {\n              field: 'yurtdisi-katilimci',\n              value: 'evet',\n              operator: 'equal'\n            }\n          ],\n          logic: 'AND', \/\/ Ko\u015fullar\u0131n VEYA (OR) de\u011fil, VE (AND) ile birle\u015fti\u011fini belirtir\n          action: 'show',\n          targets: ['burs-basvurusu']\n        },\n        { \/\/ E\u011fer ko\u015fullar kar\u015f\u0131lanmazsa gizle\n          conditions: [\n            { field: 'ogrenci-mi', value: 'evet', operator: 'equal' },\n            { field: 'yurtdisi-katilimci', value: 'evet', operator: 'equal' }\n          ],\n          logic: 'NOT_AND', \/\/ AND ko\u015fulunun tersi durumunda gizle (VEYA NOT (A AND B) )\n          action: 'hide',\n          targets: ['burs-basvurusu']\n        }\n      ]\n    });\n  });\n<\/script>\n  <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte, <code>conditions<\/code> dizisi i\u00e7erisinde birden fazla ko\u015ful tan\u0131mlanm\u0131\u015ft\u0131r. Her bir ko\u015ful, kendi <code>field<\/code>, <code>value<\/code> ve <code>operator<\/code> \u00f6zelliklerine sahiptir. <code>logic: &#039;AND&#039;<\/code> anahtar\u0131, <code>burs-basvurusu<\/code> alan\u0131n\u0131n ancak ve ancak her iki ko\u015ful da do\u011fru oldu\u011funda g\u00f6r\u00fcn\u00fcr hale gelece\u011fini belirtir. E\u011fer ko\u015fullu mant\u0131k eklentiniz <code>NOT_AND<\/code> gibi do\u011frudan bir operat\u00f6r sunmuyorsa, genellikle ikinci bir kural olu\u015fturarak <code>ogrenci-mi<\/code> \"hay\u0131r\" oldu\u011funda veya <code>yurtdisi-katilimci<\/code> \"hay\u0131r\" oldu\u011funda gizleme i\u015flemini tetikleyebilirsiniz. Bu, <code>OR<\/code> mant\u0131\u011f\u0131 ile gizleme anlam\u0131na gelir (e\u011fer \u00f6\u011frenci de\u011filsen VEYA yurt d\u0131\u015f\u0131ndan kat\u0131lm\u0131yorsan gizle).<\/p>\n<h3>OR Operat\u00f6r\u00fc Kullan\u0131m \u00d6rne\u011fi:<\/h3>\n<p>\u015eimdi de <code>OR<\/code> operat\u00f6r\u00fcne bir g\u00f6z atal\u0131m. Diyelim ki, \"E-b\u00fclten almak ister misiniz?\" sorusunun \"Evet\" olmas\u0131 VEYA \"Telefonla ileti\u015fim kurulsun mu?\" sorusunun \"Evet\" olmas\u0131 durumunda \"\u0130leti\u015fim Tercihleri\" diye bir alan g\u00f6stermek istiyoruz. Bu, iki alternatif ko\u015fuldan birinin yeterli oldu\u011fu bir durumdur.<\/p>\n<pre><code>\n<script>\n  jQuery(function($) {\n    \/\/ ... (form verisine e-b\u00fclten, telefon ileti\u015fimi ve ileti\u015fim tercihleri alanlar\u0131n\u0131 ekledi\u011fimizi varsayal\u0131m) ...\n\n    renderInstance.applyConditionalLogic({\n      rules: [\n        \/\/ ... (Di\u011fer kurallar) ...\n\n        \/\/ Yeni Kural: OR Operat\u00f6r\u00fc ile ileti\u015fim-tercihleri alan\u0131\n        {\n          conditions: [\n            {\n              field: 'e-bulten-onay',\n              value: 'evet',\n              operator: 'equal'\n            },\n            {\n              field: 'telefon-iletisim-onay',\n              value: 'evet',\n              operator: 'equal'\n            }\n          ],\n          logic: 'OR', \/\/ Ko\u015fullar\u0131n VE (AND) de\u011fil, VEYA (OR) ile birle\u015fti\u011fini belirtir\n          action: 'show',\n          targets: ['iletisim-tercihleri']\n        },\n        { \/\/ E\u011fer ko\u015fullar kar\u015f\u0131lanmazsa gizle\n          conditions: [\n            { field: 'e-bulten-onay', value: 'evet', operator: 'equal' },\n            { field: 'telefon-iletisim-onay', value: 'evet', operator: 'equal' }\n          ],\n          logic: 'NOT_OR', \/\/ OR ko\u015fulunun tersi durumunda gizle (VEYA NOT (A OR B) )\n          action: 'hide',\n          targets: ['iletisim-tercihleri']\n        }\n      ]\n    });\n  });\n<\/script>\n  <\/pre>\n<p><\/code><\/p>\n<p><code>logic: &#039;OR&#039;<\/code> anahtar\u0131, <code>iletisim-tercihleri<\/code> alan\u0131n\u0131n, <code>e-bulten-onay<\/code> \"evet\" oldu\u011funda VEYA <code>telefon-iletisim-onay<\/code> \"evet\" oldu\u011funda g\u00f6r\u00fcn\u00fcr hale gelece\u011fini belirtir. <code>NOT_OR<\/code> da benzer \u015fekilde, iki ko\u015fulun da yanl\u0131\u015f olmas\u0131 durumunda gizleme eylemini tetikler. Bu karma\u015f\u0131k senaryolar\u0131 y\u00f6netebilmek, formlar\u0131n\u0131z\u0131n hem daha ak\u0131ll\u0131 hem de kullan\u0131c\u0131 dostu olmas\u0131n\u0131 sa\u011flar. Ancak unutmay\u0131n, her eklentinin API'si farkl\u0131l\u0131k g\u00f6sterebilir. Kulland\u0131\u011f\u0131n\u0131z eklentinin d\u00f6k\u00fcmantasyonunu dikkatlice inceleyerek do\u011fru <code>operator<\/code> ve <code>logic<\/code> de\u011ferlerini kulland\u0131\u011f\u0131n\u0131zdan emin olun. Bu detaylar, dinamik formlar\u0131n\u0131z\u0131 ba\u015far\u0131yla hayata ge\u00e7irmenizin anahtar\u0131d\u0131r.<\/p>\n<h2>Mobil Uyumlu Ko\u015fullu Formlar Tasarlamak: Duyarl\u0131 Yakla\u015f\u0131mlar Nelerdir?<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz internet trafi\u011finin b\u00fcy\u00fck bir k\u0131sm\u0131 mobil cihazlardan gelmekteyken, olu\u015fturdu\u011fumuz formlar\u0131n mobil uyumlu (responsive) olmas\u0131 olmazsa olmaz bir gereklilik haline gelmi\u015ftir. Ko\u015fullu mant\u0131k ile dinamik hale getirdi\u011fimiz formlar\u0131n da mobil cihazlarda sorunsuz bir \u015fekilde \u00e7al\u0131\u015fmas\u0131 ve iyi bir kullan\u0131c\u0131 deneyimi sunmas\u0131 gerekmektedir. Mobil uyumlu ko\u015fullu formlar tasarlamak, sadece alanlar\u0131n g\u00f6sterilip gizlenmesiyle bitmez; ayn\u0131 zamanda formun genel d\u00fczeninin, yaz\u0131 tiplerinin, d\u00fc\u011fme boyutlar\u0131n\u0131n ve etkile\u015fim \u00f6\u011felerinin farkl\u0131 ekran boyutlar\u0131na ve dokunmatik aray\u00fczlere uygun olmas\u0131n\u0131 da i\u00e7erir.<\/p>\n<p>jQuery formBuilder ve ko\u015fullu mant\u0131k eklentisi, temelde form elementlerinin HTML yap\u0131s\u0131n\u0131 dinamik olarak y\u00f6netir. Bu, mobil uyumluluk konusunda bir avantaj sa\u011flar \u00e7\u00fcnk\u00fc g\u00f6sterilen veya gizlenen alanlar do\u011frudan DOM'dan kald\u0131r\u0131l\u0131r veya eklenir. Ancak, form elemanlar\u0131n\u0131n kendilerinin mobil cihazlarda d\u00fczg\u00fcn g\u00f6r\u00fcnmesini sa\u011flamak i\u00e7in CSS ve baz\u0131 durumlarda JavaScript optimizasyonlar\u0131na ihtiyac\u0131m\u0131z olacakt\u0131r.<\/p>\n<h3>Duyarl\u0131 Tasar\u0131m \u0130lkeleri ve CSS Media Query Kullan\u0131m\u0131:<\/h3>\n<p>Form elemanlar\u0131n\u0131z\u0131n ve genel form d\u00fczeninizin mobil cihazlarda iyi g\u00f6r\u00fcnmesini sa\u011flamak i\u00e7in CSS Media Query'leri kritik \u00f6neme sahiptir. Media Query'ler, belirli ekran geni\u015fliklerine, cihaz t\u00fcrlerine veya oryantasyonlar\u0131na g\u00f6re farkl\u0131 CSS kurallar\u0131 uygulaman\u0131za olanak tan\u0131r. \u0130\u015fte basit bir \u00f6rnek:<\/p>\n<pre><code>\n<style>\n  \/* Genel form stilleri *\/\n  .form-wrap {\n    max-width: 800px;\n    margin: 20px auto;\n    padding: 20px;\n    border: 1px solid #ddd;\n    border-radius: 8px;\n  }\n\n  \/* Form elemanlar\u0131 i\u00e7in temel stiller *\/\n  .form-control {\n    width: 100%;\n    padding: 10px;\n    margin-bottom: 15px;\n    border: 1px solid #ccc;\n    border-radius: 4px;\n    box-sizing: border-box; \/* padding'in geni\u015fli\u011fe dahil olmas\u0131n\u0131 sa\u011flar *\/\n  }\n\n  \/* Conditional alanlar i\u00e7in ba\u015flang\u0131\u00e7ta gizleme s\u0131n\u0131f\u0131 *\/\n  .conditional-field {\n    display: none;\n  }\n\n  \/* Mobil cihazlar i\u00e7in \u00f6zel stiller (\u00f6rne\u011fin, 600px geni\u015flikten k\u00fc\u00e7\u00fck ekranlar) *\/\n  @media screen and (max-width: 600px) {\n    .form-wrap {\n      margin: 10px;\n      padding: 15px;\n      border-radius: 0; \/* Mobilde kenar yuvarlakl\u0131\u011f\u0131n\u0131 kald\u0131rabiliriz *\/\n    }\n\n    .form-control {\n      font-size: 16px; \/* Okunabilirli\u011fi art\u0131rmak i\u00e7in font b\u00fcy\u00fckl\u00fc\u011f\u00fc *\/\n      padding: 12px; \/* Dokunmatik hedefi b\u00fcy\u00fctmek i\u00e7in padding *\/\n    }\n\n    \/* E\u011fer formBuilder otomatik olarak column s\u0131n\u0131flar\u0131 ekliyorsa *\/\n    .form-builder-column {\n      flex-direction: column; \/* S\u00fctunlar\u0131 dikey hizala *\/\n      width: 100% !important; \/* Geni\u015fli\u011fi tam ekran yap *\/\n    }\n  }\n\n  \/* Daha k\u00fc\u00e7\u00fck mobil cihazlar i\u00e7in \u00f6zel stiller (\u00f6rne\u011fin, 400px geni\u015flikten k\u00fc\u00e7\u00fck ekranlar) *\/\n  @media screen and (max-width: 400px) {\n    .form-control {\n      margin-bottom: 10px;\n    }\n    \/* Gerekirse daha fazla optimizasyon *\/\n  }\n<\/style>\n  <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki CSS \u00f6rne\u011fi, formunuzun genel yap\u0131s\u0131n\u0131 ve form elemanlar\u0131n\u0131 farkl\u0131 ekran boyutlar\u0131na g\u00f6re nas\u0131l adapte edebilece\u011finizi g\u00f6sterir. \u00d6zellikle <code>.form-control<\/code> s\u0131n\u0131f\u0131n\u0131n <code>width: 100%<\/code> ve <code>box-sizing: border-box<\/code> \u00f6zelliklerine sahip olmas\u0131, elemanlar\u0131n ekran geni\u015fli\u011fine otomatik olarak uyum sa\u011flamas\u0131 i\u00e7in temel bir ad\u0131md\u0131r. Media Query'ler i\u00e7inde, daha k\u00fc\u00e7\u00fck ekranlar i\u00e7in yaz\u0131 tipi boyutunu art\u0131rabilir, <code>padding<\/code> de\u011ferlerini ayarlayarak dokunmatik hedefleri kolayla\u015ft\u0131rabilir ve \u00e7oklu s\u00fctunlu d\u00fczenleri tek s\u00fctunlu hale getirebilirsiniz. formBuilder taraf\u0131ndan eklenen s\u0131n\u0131flar\u0131 (\u00f6rne\u011fin, s\u00fcr\u00fckle-b\u0131rak i\u00e7in kullan\u0131lan s\u00fctun s\u0131n\u0131flar\u0131) hedefleyerek de mobil uyumlu d\u00fczenlemeler yapabilirsiniz.<\/p>\n<h3>Ko\u015fullu Mant\u0131k ve Mobil Deneyim Entegrasyonu:<\/h3>\n<p>Ko\u015fullu mant\u0131k, mobil formlarda \u00f6zellikle \u00f6nemlidir \u00e7\u00fcnk\u00fc k\u0131s\u0131tl\u0131 ekran alan\u0131nda kullan\u0131c\u0131n\u0131n dikkatini da\u011f\u0131tacak gereksiz alanlar\u0131 gizleyerek daha odakl\u0131 bir deneyim sunar. \u00d6rne\u011fin, b\u00fcy\u00fck bir kay\u0131t formunda, mobil kullan\u0131c\u0131lar i\u00e7in sadece ana sorular\u0131 g\u00f6sterip, detayl\u0131 sorular\u0131 ko\u015fullu olarak a\u00e7mak, formu daha az yorucu hale getirir. Bu, mobil cihazlarda kullan\u0131c\u0131lar\u0131n formu tamamlama oranlar\u0131n\u0131 art\u0131rabilir.<\/p>\n<ul>\n<li><strong>Daha Az Kayd\u0131rma:<\/strong> Ko\u015fullu mant\u0131k, uzun formlar\u0131 k\u0131saltarak mobil kullan\u0131c\u0131lar\u0131n daha az kayd\u0131rma yapmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>Odaklanm\u0131\u015f Giri\u015f:<\/strong> Kullan\u0131c\u0131, sadece o anki cevab\u0131na g\u00f6re alakal\u0131 alanlar\u0131 g\u00f6rd\u00fc\u011f\u00fc i\u00e7in dikkat da\u011f\u0131n\u0131kl\u0131\u011f\u0131 azal\u0131r ve veri giri\u015fi daha h\u0131zl\u0131 olur.<\/li>\n<li><strong>Performans:<\/strong> DOM'da daha az element olmas\u0131, \u00f6zellikle eski veya d\u00fc\u015f\u00fck g\u00fc\u00e7l\u00fc mobil cihazlarda formun daha h\u0131zl\u0131 y\u00fcklenmesine ve daha ak\u0131c\u0131 \u00e7al\u0131\u015fmas\u0131na yard\u0131mc\u0131 olabilir.<\/li>\n<\/ul>\n<p>Mobil uyumlu ko\u015fullu formlar tasarlarken, formBuilder'\u0131n ve ko\u015fullu mant\u0131k eklentisinin otomatik olarak olu\u015fturdu\u011fu HTML yap\u0131s\u0131n\u0131 anlamak ve CSS'inizi buna g\u00f6re uyarlamak \u00f6nemlidir. Taray\u0131c\u0131 geli\u015ftirici ara\u00e7lar\u0131n\u0131 (\u00f6zellikle mobil g\u00f6r\u00fcn\u00fcm sim\u00fclat\u00f6rlerini) kullanarak farkl\u0131 cihazlarda formunuzu test etmek, olas\u0131 d\u00fczen sorunlar\u0131n\u0131 erkenden tespit etmenize yard\u0131mc\u0131 olacakt\u0131r. Bu duyarl\u0131 yakla\u015f\u0131mlar, dinamik formlar\u0131n\u0131z\u0131n her ekranda en iyi \u015fekilde g\u00f6r\u00fcnmesini ve i\u015flevselli\u011fini korumas\u0131n\u0131 garantiler.<\/p>\n<h2>Sonu\u00e7: Dinamik Formlar\u0131n G\u00fcc\u00fc ve Gelece\u011fi<\/h2>\n<p>jQuery formBuilder ve ko\u015fullu mant\u0131k eklentilerinin birle\u015fimi, web formlar\u0131 olu\u015fturma ve y\u00f6netme \u015feklimizde devrim yaratmaktad\u0131r. Geleneksel, statik formlar\u0131n aksine, dinamik formlar kullan\u0131c\u0131 etkile\u015fimine an\u0131nda yan\u0131t vererek sadece ilgili bilgileri g\u00f6sterir. Bu, kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftirir, form tamamlama oranlar\u0131n\u0131 art\u0131r\u0131r ve veri toplama s\u00fcre\u00e7lerini hem geli\u015ftiriciler hem de son kullan\u0131c\u0131lar i\u00e7in daha verimli hale getirir. Ko\u015fullu mant\u0131k sayesinde, karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 formlar\u0131n\u0131za entegre edebilir, gereksiz alanlar\u0131 gizleyebilir ve formunuzu her kullan\u0131c\u0131n\u0131n \u00f6zel ihtiya\u00e7lar\u0131na g\u00f6re ki\u015fiselle\u015ftirebilirsiniz. Bu sayede, daha temiz, daha odakl\u0131 ve daha az yorucu formlar olu\u015fturarak dijital etkile\u015fimlerinizin kalitesini art\u0131r\u0131rs\u0131n\u0131z.<\/p>\n<p>Gelecekte, yapay zeka ve makine \u00f6\u011frenimi entegrasyonlar\u0131yla formlar\u0131n daha da ak\u0131ll\u0131 hale gelece\u011fini tahmin edebiliriz. Kullan\u0131c\u0131lar\u0131n ge\u00e7mi\u015f davran\u0131\u015flar\u0131na veya demografik bilgilerine g\u00f6re formlar\u0131n dinamik olarak \u015fekillenmesi, \u00f6neriler sunmas\u0131 veya hatta hatalar\u0131 proaktif olarak d\u00fczeltmesi gibi \u00f6zellikler, form deneyimini tamamen yeni bir boyuta ta\u015f\u0131yabilir. Bu teknolojik ilerlemelerle birlikte, jQuery formBuilder gibi esnek ve geni\u015fletilebilir ara\u00e7lar\u0131n, bu yenilikleri kolayca adapte ederek geli\u015ftiricilere g\u00fc\u00e7l\u00fc \u00e7\u00f6z\u00fcmler sunmaya devam edece\u011fi a\u00e7\u0131kt\u0131r. Dinamik formlar, sadece bir trend olmaktan \u00f6te, modern web uygulamalar\u0131n\u0131n vazge\u00e7ilmez bir bile\u015fenidir ve gelecekteki dijital etkile\u015fimlerin temelini olu\u015fturmaya devam edecektir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<h4>1. jQuery formBuilder'a ko\u015fullu mant\u0131k eklemek i\u00e7in mutlaka bir eklentiye mi ihtiyac\u0131m var?<\/h4>\n<p>Evet, jQuery formBuilder'\u0131n \u00e7ekirdek s\u00fcr\u00fcm\u00fcnde yerle\u015fik bir ko\u015fullu mant\u0131k \u00f6zelli\u011fi bulunmamaktad\u0131r. Bu \u00f6zelli\u011fi eklemek i\u00e7in \u00fc\u00e7\u00fcnc\u00fc taraf veya topluluk taraf\u0131ndan geli\u015ftirilen bir eklenti kullanman\u0131z gerekmektedir. Bu eklentiler, formBuilder'\u0131n esnek API'sinden faydalanarak bu i\u015flevselli\u011fi kolayca entegre etmenizi sa\u011flar.<\/p>\n<h4>2. Ko\u015fullu mant\u0131k eklentisi hangi t\u00fcr form alanlar\u0131yla \u00e7al\u0131\u015fabilir?<\/h4>\n<p>\u00c7o\u011fu ko\u015fullu mant\u0131k eklentisi, metin giri\u015fleri, radyo d\u00fc\u011fmeleri, onay kutular\u0131, a\u00e7\u0131l\u0131r men\u00fcler (select box) gibi yayg\u0131n form elemanlar\u0131yla sorunsuz bir \u015fekilde \u00e7al\u0131\u015f\u0131r. Eklentinin dok\u00fcmantasyonunu kontrol etmek, desteklenen alan t\u00fcrleri ve \u00f6zel durumlar hakk\u0131nda en do\u011fru bilgiyi sa\u011flayacakt\u0131r.<\/p>\n<h4>3. FormBuilder'\u0131n JSON verisi ko\u015fullu mant\u0131k kurallar\u0131m\u0131 nas\u0131l etkiler?<\/h4>\n<p>FormBuilder, formunuzu JSON format\u0131nda d\u0131\u015fa aktar\u0131r ve bu veri, <code>formRender<\/code> taraf\u0131ndan kullan\u0131larak formunuzu g\u00f6r\u00fcnt\u00fcler. Ko\u015fullu mant\u0131k eklentisi, genellikle bu JSON verisindeki alanlar\u0131n <code>name<\/code> \u00f6zelliklerini kullanarak kurallar\u0131 tetikler ve hedef alanlar\u0131 belirler. Bu nedenle, alanlar\u0131n\u0131z\u0131n benzersiz ve tutarl\u0131 <code>name<\/code> \u00f6zniteliklerine sahip olmas\u0131 kritik \u00f6neme sahiptir.<\/p>\n<h4>4. Mobil cihazlarda ko\u015fullu formlar\u0131n performans\u0131n\u0131 nas\u0131l optimize edebilirim?<\/h4>\n<p>Mobil performans\u0131 optimize etmek i\u00e7in, \u00f6ncelikle formunuzun HTML ve CSS'inin duyarl\u0131 oldu\u011fundan emin olun (media query'ler kullan\u0131n). Ko\u015fullu mant\u0131k, gereksiz alanlar\u0131 DOM'dan gizleyerek veya kald\u0131rarak zaten bir performans art\u0131\u015f\u0131 sa\u011flar. Ek olarak, b\u00fcy\u00fck resimlerden ka\u00e7\u0131n\u0131n, gereksiz JavaScript y\u00fcklerini minimize edin ve formunuzu farkl\u0131 mobil cihazlarda d\u00fczenli olarak test ederek olas\u0131 darbo\u011fazlar\u0131 tespit edin.<\/p>\n<h4>5. Birden fazla ko\u015fullu kural birbiriyle \u00e7ak\u0131\u015f\u0131rsa ne olur?<\/h4>\n<p>E\u011fer birden fazla ko\u015fullu kural ayn\u0131 hedef alan\u0131 etkiliyorsa ve bu kurallar \u00e7ak\u0131\u015fan eylemler (\u00f6rne\u011fin, bir kural g\u00f6sterirken di\u011feri gizlemeye \u00e7al\u0131\u015f\u0131yorsa) i\u00e7eriyorsa, genellikle eklentinin i\u00e7 mant\u0131\u011f\u0131 veya kurallar\u0131n tan\u0131mlanma s\u0131ras\u0131 belirleyici olur. Baz\u0131 eklentiler \u00f6ncelik mekanizmalar\u0131 sunarken, baz\u0131lar\u0131 son uygulanan kural\u0131n ge\u00e7erli olmas\u0131n\u0131 sa\u011flayabilir. Bu t\u00fcr \u00e7ak\u0131\u015fmalar\u0131 \u00f6nlemek i\u00e7in kurallar\u0131n\u0131z\u0131 dikkatlice tasarlaman\u0131z ve test etmeniz \u00f6nemlidir.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"G\u00fcn\u00fcm\u00fczde online formlar, web sitelerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. Ancak bazen bir formun basit bir bilgi toplama&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[135],"tags":[],"class_list":{"0":"post-33713","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-jquery","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>jQuery formBuilder ile Ko\u015fullu Mant\u0131k: 5 Dakikada Dinamik Formlar<\/title>\n<meta name=\"description\" content=\"G\u00fcn\u00fcm\u00fczde online formlar, web sitelerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. Ancak bazen bir formun basit bir bilgi toplama arac\u0131 olmaktan \u00f6teye ge\u00e7mesi, kullan\u0131c\u0131n\u0131n verdi\u011fi yan\u0131tlara g\u00f6re ak\u0131ll\u0131ca \u015fekillenmesi gerekebilir. S\u0131k\u0131c\u0131, uzun ve her kullan\u0131c\u0131 i\u00e7in ayn\u0131 g\u00f6r\u00fcnen formlar, d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131n\u0131 d\u00fc\u015f\u00fcrebilir ve kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Peki, kullan\u0131c\u0131n\u0131n ihtiya\u00e7lar\u0131na an\u0131nda uyum sa\u011flayan, sadece ilgili alanlar\u0131 g\u00f6steren ve b\u00f6ylece veri toplama s\u00fcrecini hem sizin hem de kullan\u0131c\u0131 i\u00e7in keyifli hale getiren dinamik formlar\u0131 nas\u0131l olu\u015fturabiliriz? \u0130\u015fte tam da bu noktada, jQuery formBuilder ve ko\u015fullu mant\u0131k devreye giriyor; formlar\u0131n\u0131z\u0131 sadece 5 dakikada ak\u0131ll\u0131 ve interaktif bir aray\u00fcze d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131yor.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"jQuery formBuilder ile Ko\u015fullu Mant\u0131k: 5 Dakikada Dinamik Formlar\" \/>\n<meta property=\"og:description\" content=\"G\u00fcn\u00fcm\u00fczde online formlar, web sitelerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. Ancak bazen bir formun basit bir bilgi toplama arac\u0131 olmaktan \u00f6teye ge\u00e7mesi, kullan\u0131c\u0131n\u0131n verdi\u011fi yan\u0131tlara g\u00f6re ak\u0131ll\u0131ca \u015fekillenmesi gerekebilir. S\u0131k\u0131c\u0131, uzun ve her kullan\u0131c\u0131 i\u00e7in ayn\u0131 g\u00f6r\u00fcnen formlar, d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131n\u0131 d\u00fc\u015f\u00fcrebilir ve kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Peki, kullan\u0131c\u0131n\u0131n ihtiya\u00e7lar\u0131na an\u0131nda uyum sa\u011flayan, sadece ilgili alanlar\u0131 g\u00f6steren ve b\u00f6ylece veri toplama s\u00fcrecini hem sizin hem de kullan\u0131c\u0131 i\u00e7in keyifli hale getiren dinamik formlar\u0131 nas\u0131l olu\u015fturabiliriz? \u0130\u015fte tam da bu noktada, jQuery formBuilder ve ko\u015fullu mant\u0131k devreye giriyor; formlar\u0131n\u0131z\u0131 sadece 5 dakikada ak\u0131ll\u0131 ve interaktif bir aray\u00fcze d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131yor.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-06T03:31:05+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"jQuery formBuilder ile Ko\u015fullu Mant\u0131k: 5 Dakikada Dinamik Formlar\",\"datePublished\":\"2025-11-06T03:31:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/\"},\"wordCount\":3946,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"jQuery\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/\",\"name\":\"jQuery formBuilder ile Ko\u015fullu Mant\u0131k: 5 Dakikada Dinamik Formlar\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-06T03:31:05+00:00\",\"description\":\"G\u00fcn\u00fcm\u00fczde online formlar, web sitelerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. Ancak bazen bir formun basit bir bilgi toplama arac\u0131 olmaktan \u00f6teye ge\u00e7mesi, kullan\u0131c\u0131n\u0131n verdi\u011fi yan\u0131tlara g\u00f6re ak\u0131ll\u0131ca \u015fekillenmesi gerekebilir. S\u0131k\u0131c\u0131, uzun ve her kullan\u0131c\u0131 i\u00e7in ayn\u0131 g\u00f6r\u00fcnen formlar, d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131n\u0131 d\u00fc\u015f\u00fcrebilir ve kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Peki, kullan\u0131c\u0131n\u0131n ihtiya\u00e7lar\u0131na an\u0131nda uyum sa\u011flayan, sadece ilgili alanlar\u0131 g\u00f6steren ve b\u00f6ylece veri toplama s\u00fcrecini hem sizin hem de kullan\u0131c\u0131 i\u00e7in keyifli hale getiren dinamik formlar\u0131 nas\u0131l olu\u015fturabiliriz? \u0130\u015fte tam da bu noktada, jQuery formBuilder ve ko\u015fullu mant\u0131k devreye giriyor; formlar\u0131n\u0131z\u0131 sadece 5 dakikada ak\u0131ll\u0131 ve interaktif bir aray\u00fcze d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131yor.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"jQuery formBuilder ile Ko\u015fullu Mant\u0131k: 5 Dakikada Dinamik Formlar\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"jQuery formBuilder ile Ko\u015fullu Mant\u0131k: 5 Dakikada Dinamik Formlar","description":"G\u00fcn\u00fcm\u00fczde online formlar, web sitelerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. Ancak bazen bir formun basit bir bilgi toplama arac\u0131 olmaktan \u00f6teye ge\u00e7mesi, kullan\u0131c\u0131n\u0131n verdi\u011fi yan\u0131tlara g\u00f6re ak\u0131ll\u0131ca \u015fekillenmesi gerekebilir. S\u0131k\u0131c\u0131, uzun ve her kullan\u0131c\u0131 i\u00e7in ayn\u0131 g\u00f6r\u00fcnen formlar, d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131n\u0131 d\u00fc\u015f\u00fcrebilir ve kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Peki, kullan\u0131c\u0131n\u0131n ihtiya\u00e7lar\u0131na an\u0131nda uyum sa\u011flayan, sadece ilgili alanlar\u0131 g\u00f6steren ve b\u00f6ylece veri toplama s\u00fcrecini hem sizin hem de kullan\u0131c\u0131 i\u00e7in keyifli hale getiren dinamik formlar\u0131 nas\u0131l olu\u015fturabiliriz? \u0130\u015fte tam da bu noktada, jQuery formBuilder ve ko\u015fullu mant\u0131k devreye giriyor; formlar\u0131n\u0131z\u0131 sadece 5 dakikada ak\u0131ll\u0131 ve interaktif bir aray\u00fcze d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131yor.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/","og_locale":"tr_TR","og_type":"article","og_title":"jQuery formBuilder ile Ko\u015fullu Mant\u0131k: 5 Dakikada Dinamik Formlar","og_description":"G\u00fcn\u00fcm\u00fczde online formlar, web sitelerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. Ancak bazen bir formun basit bir bilgi toplama arac\u0131 olmaktan \u00f6teye ge\u00e7mesi, kullan\u0131c\u0131n\u0131n verdi\u011fi yan\u0131tlara g\u00f6re ak\u0131ll\u0131ca \u015fekillenmesi gerekebilir. S\u0131k\u0131c\u0131, uzun ve her kullan\u0131c\u0131 i\u00e7in ayn\u0131 g\u00f6r\u00fcnen formlar, d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131n\u0131 d\u00fc\u015f\u00fcrebilir ve kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Peki, kullan\u0131c\u0131n\u0131n ihtiya\u00e7lar\u0131na an\u0131nda uyum sa\u011flayan, sadece ilgili alanlar\u0131 g\u00f6steren ve b\u00f6ylece veri toplama s\u00fcrecini hem sizin hem de kullan\u0131c\u0131 i\u00e7in keyifli hale getiren dinamik formlar\u0131 nas\u0131l olu\u015fturabiliriz? \u0130\u015fte tam da bu noktada, jQuery formBuilder ve ko\u015fullu mant\u0131k devreye giriyor; formlar\u0131n\u0131z\u0131 sadece 5 dakikada ak\u0131ll\u0131 ve interaktif bir aray\u00fcze d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131yor.","og_url":"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-06T03:31:05+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"jQuery formBuilder ile Ko\u015fullu Mant\u0131k: 5 Dakikada Dinamik Formlar","datePublished":"2025-11-06T03:31:05+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/"},"wordCount":3946,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["jQuery"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/","url":"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/","name":"jQuery formBuilder ile Ko\u015fullu Mant\u0131k: 5 Dakikada Dinamik Formlar","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-06T03:31:05+00:00","description":"G\u00fcn\u00fcm\u00fczde online formlar, web sitelerinin vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. Ancak bazen bir formun basit bir bilgi toplama arac\u0131 olmaktan \u00f6teye ge\u00e7mesi, kullan\u0131c\u0131n\u0131n verdi\u011fi yan\u0131tlara g\u00f6re ak\u0131ll\u0131ca \u015fekillenmesi gerekebilir. S\u0131k\u0131c\u0131, uzun ve her kullan\u0131c\u0131 i\u00e7in ayn\u0131 g\u00f6r\u00fcnen formlar, d\u00f6n\u00fc\u015f\u00fcm oranlar\u0131n\u0131 d\u00fc\u015f\u00fcrebilir ve kullan\u0131c\u0131 deneyimini olumsuz etkileyebilir. Peki, kullan\u0131c\u0131n\u0131n ihtiya\u00e7lar\u0131na an\u0131nda uyum sa\u011flayan, sadece ilgili alanlar\u0131 g\u00f6steren ve b\u00f6ylece veri toplama s\u00fcrecini hem sizin hem de kullan\u0131c\u0131 i\u00e7in keyifli hale getiren dinamik formlar\u0131 nas\u0131l olu\u015fturabiliriz? \u0130\u015fte tam da bu noktada, jQuery formBuilder ve ko\u015fullu mant\u0131k devreye giriyor; formlar\u0131n\u0131z\u0131 sadece 5 dakikada ak\u0131ll\u0131 ve interaktif bir aray\u00fcze d\u00f6n\u00fc\u015ft\u00fcrmenize olanak tan\u0131yor.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/jquery-formbuilder-ile-kosullu-mantik-5-dakikada-dinamik-formlar\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"jQuery formBuilder ile Ko\u015fullu Mant\u0131k: 5 Dakikada Dinamik Formlar"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33713","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=33713"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33713\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33713"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33713"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33713"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}