Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Javascript yardım

Konu, 'Javascript' kısmında alivepro tarafından paylaşıldı.

  1. alivepro

    alivepro Yeni Üye

    Kayıt:
    24 Ağustos 2015
    Mesajlar:
    21
    Beğenilen Mesajlar:
    2
    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.
     
  2. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    Bende benzerleri var. Bulayım yapıştırayım.
     
  3. alivepro

    alivepro Yeni Üye

    Kayıt:
    24 Ağustos 2015
    Mesajlar:
    21
    Beğenilen Mesajlar:
    2
    Çok sevinirim.
     
  4. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    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. :D

    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 }
     
    Son düzenleme: 25 Nisan 2018
  5. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    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>
     
  6. alivepro

    alivepro Yeni Üye

    Kayıt:
    24 Ağustos 2015
    Mesajlar:
    21
    Beğenilen Mesajlar:
    2
    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.
     
  7. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    "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.
     
  8. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    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.
     
  9. alivepro

    alivepro Yeni Üye

    Kayıt:
    24 Ağustos 2015
    Mesajlar:
    21
    Beğenilen Mesajlar:
    2
    Estağfurullah yanlış anlaşıldım, özür dilerim.

    Benim koda substring ekleyince oldu ellerine sağlık, çok teşekkür ederim.
     
    sedirAğacı bunu beğendi.
  10. alivepro

    alivepro Yeni Üye

    Kayıt:
    24 Ağustos 2015
    Mesajlar:
    21
    Beğenilen Mesajlar:
    2
    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?
     
  11. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    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.
     
  12. alivepro

    alivepro Yeni Üye

    Kayıt:
    24 Ağustos 2015
    Mesajlar:
    21
    Beğenilen Mesajlar:
    2
    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.
     
  13. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    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.