Merhaba, bir adet tek inputluk formum var bu form a yazılan yazıları benim sabit olarak belirlediğim bazı kelime yada rakamlar ile başlamasını izin vermemesi ve uyarı vermesi. örnek: daha önce belirlediğim "abcd","aaaa","bbbb" gibi kelimelerle başlayan kelimeler yazlıp post edildiği zaman uyarı vererek "abcd,aaaa,bbbb kelimeleri ile başlayamaz" uyarısı vermek. ama sadece belirlediğim kelimeler yada rakamlarla başlayamıycak yani belirlediğim kelime yazının içinde geçebilir ancak başlayamaz olacak. yardımlarınız için şimdiden teşekkür ederim.
HTML: /* aaaaa 12345 00000 string içinde arka arkaya tekrarlayan karakter varsa engelle. myLimit: ard arda en fazla kaç tekrara izin vereceksin. */ function tekrarlamaKontrolu(myStr, myLimit) { myStr += "╬"; // döngüde son chr işleme alınsın diye klavyede olmayan chr ekle. var myArr = myStr.split(''); var onc = ""; // bir önceki chr var tekr = ""; // tekrarlayan chr var result = ""; // limiti geçen tekr ler toplamı for (var ii = 0; ii < myArr.length; ii++) { if (ii > 0) { if (onc == myArr[ii]) { tekr += onc; if (tekr.length == 1) { tekr += onc; } } else { if (tekr.length > myLimit) { result += tekr; } tekr = ""; } } onc = myArr[ii]; } return result; // limiti geçmiş ise dolu döner. yoksa boş. } Bu kodu epey eskiden yazmışım belliki. Biraz acemice olmuş ama doğru çalışır. myLimit rakamı kadar string içinde kontrol yapıyor. Eğer myLimit rakamına eşit tekrarlayan chr varsa result değişkeni içinde bu tekrarlayan stringi döndürüyor. result boş dönmüşse, tekrarlayan string yok demektir. Bu fonksiyon şu şekilde çağrılır. const myStr = "sdg fg sdg sdg d"; // kontrolu yapılacak string. const myLimit = 4; // 5 kez tekrar varsa result değişkeni dolu dönsün. var result = tekrarlamaKontrolu(myStr, myLimit); if (result != "") { stringde tekrar var işlemleri } Tabi sen string içinde değil, başında kontrol yapsın istiyorsun, bu durumda tekrarlamaKontrolu fonksiyonuna, stringin baş kısmını göndereceğiz. const myStr = "sdg fg sdg sdg d"; const myTx = myStr.substring(0, 6); // en baştan 6 chr alsın. tabi string 6 chrden küçükde olabilir.!!! const myLimit = 4; // 5 kez tekrar varsa result değişkeni dolu dönsün. var result = tekrarlamaKontrolu(myTx, myLimit); if (result != "") { stringde tekrar var işlemleri }
Ben şifre ve telefon girişini şu şekilde kontrol etmişim. HTML: <script> /* aaaaa 12345 00000 string içinde en az 5 tane arka arkaya tekrarlayan karakter varsa engelle. myLimit: en fazla kaç tekrara izin vereceksin. Örn: if (iterateControl(mTel, 4, false)) 4: ard arda 5 adet tekrarlayan chr olamaz. */ function iterateControl(myStr, myLimit, myPass) { var result = tekrarlamaKontrolu(myStr, myLimit); if (result != "") return true; // şifrede buraya girmeli, cep telde buraya girmemeli. if (myPass) { if (myStr.indexOf("01234") > -1 | myStr.indexOf("12345") > -1 | myStr.indexOf("43210") > -1 | myStr.indexOf("54321") > -1 | myStr.indexOf("98765") > -1 | myStr.indexOf("abcde") > -1 | myStr.indexOf("qwert") > -1) { return true; } } return false; } </script>
Sizin kodlar olmadı ama şöyle bir kod bulmuştum Kod: $(function() { $("#submit").on("click",function() { var sender_id = $("input:text[name='sender_id']").val(); var badwords = ["12345", "01234"]; if($.inArray(sender_id, badwords) !==-1) { alert("12345, 01234 karakterlerini kullanamazsınız."); return false; } }); }); Bu kod da 12345 yada 01234 yazıp göndere bastığımda "12345, 01234 karakterlerini kullanamazsınız." diye uyarı verip post etmiyor, buraya kadar herşey normal ancak 123456 yada 012345 yazıp göndere basınca gidiyor ben belirlediğim kelimelerin ya da rakamların en başta kullanılmasını istemiyorum, yani benim "sender_id" adında bir text alanım var buranın başı "12345" yada "01234" ile başladığı zaman post etmemesi ve uyarı vermesi gerekiyor.
"Senin kodlar olmadı" deyip benim karizmayı cizeceğine, senin kodları görünce hiç denemedim desene şuna. Yukardaki örnekler başka işlerindede kullanabileceğin hafiften esnek yazılımdı. Anlaşılan sende hap gibi istiyosun. HTML: let myTx = document.getElementById("sender_id").value.substring(0, 6); const result = tekrarlamaKontrolu(myTx, 4); if (result != "") alert(result + " gibi tekrarlayan metinleri kullanamazsınız. Lütfen değiştiriniz."); function tekrarlamaKontrolu(myStr, myLimit) { myStr += "╬"; var myArr = myStr.split(''); var onc = ""; var tekr = ""; var result = ""; for (var ii = 0; ii < myArr.length; ii++) { if (ii > 0) { if (onc == myArr[ii]) { tekr += onc; if (tekr.length == 1) { tekr += onc; } } else { if (tekr.length > myLimit) { result += tekr; } tekr = ""; } } onc = myArr[ii]; } return result; } bunu ezbere yazdım, umarım hatalı sonuçlanmaz.
Senin eklediğin jQuery örnekte, şu satırı var sender_id = $("input:text[name='sender_id']").val(); Böyle değiştirirsen belki olabilir. var sender_id = $("input:text[name='sender_id']").val().substring(0, 6); Sonuna substring ekledim, en baştan 6 tane al diye. jQuery bilmediğimden, tahminen yazdım.
Estağfurullah yanlış anlaşıldım, özür dilerim. Benim koda substring ekleyince oldu ellerine sağlık, çok teşekkür ederim.
Hocam birşey daha soracağım, Kod: <textarea class="form-control" name="message" rows="5" id="message"></textarea> Bir text area var, bu text area yı post ettiğimde gönderilen post un sonuna otomatik olarak "A587" gibi bir yazı eklemesini istiyorum yani; textarea ya "deneme yazısı" diye birşey yazıp gönder dediğimde "deneme yazısı A587" olarak post etmesini istiyorum. mümkün müdür?
Mümkün tabi.? Kullandığın server diline göre değişiklik gösterebilir. Server dilinide belirtmelisin. Gönder butonu kodunuda koysan faydası olur.
Kod: <form class="" role="form" method="post" action="{{url('sms/message-data)}}"> <div class="form-group"> <label>{{language_data('Message')}}</label> <textarea class="form-control" name="message" rows="5" id="message"></textarea> <span class="help text-uppercase" id="remaining">160 {{language_data('characters remaining')}}</span> <span class="help text-success" id="messages">1 {{language_data('message')}} </span> </div> <button type="submit" class="btn btn-success btn-sm"><i class="fa fa-send"></i> {{language_data('Send')}} </button> </form> Sunucu dili olarak php kullanıyorum.
PHP olunca ben karışmayayım, .NET de, ajaxı karıştırmadan gönder butonu click eventine, önce javascript işlemlerini yap, sonra servere git diyebiliyorsun. PHP de bilmem. Tabi eğer "A587" değeri hep aynı ise, server tarafında, textArea sonunada ekleyebilirsin.