• 28-01-2023, 10:53:02
    #10
    Hata, "body" değişkeninin değerinin "CKEDITOR.instances['body'].getData();" ile alınmasına rağmen kontrol edilirken "document.getElementById('body').value" ile alınması. Ayrıca, "includes" fonksiyonunun yerine "indexOf" kullanılması daha doğru olacaktır.

    Düzeltilmiş kod parçası aşağıdaki gibidir:

    if (body.indexOf("Bölüm Adı") !== -1) {
    Swal.fire({
    icon: 'warning',
    title: 'Uyarı!',
    text: 'Lütfen "Bölüm Adı" yerine gerçek bölüm adını kullanınız.',
    confirmButtonText: 'Tamam',
    })
    return;
    }

    Ayrıca:

    Swal.fire({
    title: 'Dikkat!',
    text: 'Duyuru yayınlamak üzeresiniz. Bu yayınlayacağınız duyuru tüm kişilere E-Mail olarak gidecektir. İşlemi onaylıyor musunuz?',
    icon: 'warning',
    showCancelButton: true,
    confirmButtonColor: '#3085d6',
    cancelButtonColor: '#d33',
    confirmButtonText: 'Evet, gönder.',
    cancelButtonText: 'Hayır, iptal et!'
    }).then((result) => {
    if (result.value) {
    // Form verilerini alın
    var title = document.getElementById('title').value;
    var body = CKEDITOR.instances['body'].getData();
    var category_id = document.getElementById('category_id').value;

    // POST isteği gönderin
    $.ajax({
    url: "duyuru_ekle_islem.php",
    type: "POST",
    dataType: "JSON",
    data: {title: title, body: body, category_id: category_id},
    success: function(json){
    toastr.success(json.post.msg);
    }
    });
    }
    });

    Bu değişiklikler ile if koşulları çalışacaktır.
  • 28-01-2023, 10:53:29
    #11
    turansonkaya adlı üyeden alıntı: mesajı görüntüle
    Sanırım aynı şeyleri düşünmüşüz, bende o şekilde düzelttim fakat sonuç aynıydı hatta dediğiniz gibi yaptığım zaman "Bölüm Adı" ibaresinin geçtiğini bile okuyamıyordu.
    En son şu şekilde bir kod ile hallettim bu seferde anlık olarak okumadığı için ibareyi silsem dahi hata almaya devam ediyorum.
    Şuan güncel kodlarım;

    <script>
        document.getElementById('post-form').addEventListener('submit', function(e){
          e.preventDefault();
          addAnnouncement();
        });
    
        function addAnnouncement(e) {
          CKEDITOR.instances['body'].updateElement();
          // Form verilerini alın
          var title = document.getElementById('title').value;
          var body = CKEDITOR.instances['body'].getData();
          var bodyBolumKontrol = document.getElementById("body").textContent;
          var category_id = document.getElementById('category_id').value;
    
          // Eğer title 5 karakterden düşükse uyarı mesajı yazdır
          if (title.length < 5) {
              Swal.fire({
                icon: 'error',
                title: 'Hata!',
                text: 'Başlık minimum 5 karakterden oluşması gerekiyor.',
                confirmButtonText: 'Tamam',
              })
              return;
          }
    
          // İçerik içerisinde "Bölüm Adı" ibaresini değiştirmemişse uyarı mesajı yazdır
          if (bodyBolumKontrol.match(/Bölüm Adı/g)) {
              Swal.fire({
                  icon: 'warning',
                  title: 'Uyarı!',
                  text: 'Lütfen "Bölüm Adı" yerine gerçek bölüm adını kullanınız.',
                  confirmButtonText: 'Tamam',
              })
              return;
          }
    
          // İçerik 50 karakterden düşükse uyarı mesajı yazdır
          if (body.split(" ").length < 30) {
              Swal.fire({
                  icon: 'error',
                  title: 'Hata!',
                  text: 'İçerik minimum 30 karakterden oluşması gerekiyor.',
                  confirmButtonText: 'Tamam',
              })
              return;
          }
    
          // Son uyarı, burada kullanıcıdan son onayı alıp mail göndertiyoruz
          Swal.fire({
            title: 'Dikkat!',
            text: 'Duyuru yayınlamak üzeresiniz. Bu yayınlayacağınız duyuru tüm kişilere E-Mail olarak gidecektir. İşlemi onaylıyor musunuz?',
            icon: 'warning',
            showCancelButton: true,
            confirmButtonColor: '#3085d6',
            cancelButtonColor: '#d33',
            confirmButtonText: 'Evet, gönder.',
            cancelButtonText: 'Hayır, iptal et!'
          }).then((result) => {
            if (result.value) {
              // Form verilerini alın
              var title = document.getElementById('title').value;
              var body = document.getElementById('body').value;
              var category_id = document.getElementById('category_id').value;
    
              // POST isteği gönderin
              $.ajax({
                url: "duyuru_ekle_islem.php",
                type: "POST",
                dataType: "JSON",
                data: {title: title, body: body, category_id: category_id},
                success: function(json){
                   toastr.success(json.post.msg);
                }
              });
            }
          });
          e.preventDefault();
        }
    </script>
    Görünüşe göre, "bodyBolumKontrol" değişkeninde kullandığınız "document.getElementById("body").textContent" kodu, CKeditor içerisinde yazdığınız metnin HTML etiketlerini de içerir. Bu nedenle "Bölüm Adı" ibaresini aramakta zorluk yaşıyorsunuz. Bunun yerine, CKeditor içerisinde yazdığınız metnin HTML etiketlerinden arındırılmış halini almak için "CKEDITOR.instances['body'].document.getBody().getText()" kodunu kullanabilirsiniz.

    Önerim, eklediğiniz kodları kontrol edip, belirttiğim gibi değiştirmeniz olacaktır.