v2.5.2
Giriş yap

Foreach() Dışındaki Modalı Çağırma ve verileri gönderme

acemi
304 defa görüntülendi

döngü içerisindeki modal ı nasıl açabilirim.
döngüde veriler var ve bunları o açılan modal içerisindeki inputlara nasıl value olarak atayabilirim.

foreach içinde Id no vermez isem açılıyor da boş modal işime yaramıyor

foreach içinde modal çalıştırsak olur fakat bu sefer arka tarafta yüklü veride birşeyleri etkiler diye düşünüyorum
bunu foreach dışında nasıl yapabilirim yardımcı olabilirimisiniz.

teşekkürler.

   foreach($as as $row):
       echo '<a href="#" id="modal" onClick="ModalActive.show('ModalID<?php echo $row['id'] ?>')"></a>';
   
   endforeach;
<div class="modal fade" id="ModalID" aria-modal="true" role="dialog">
	<div class="modal-dialog modal-lg modal-dialog-centered">
		<div class="modal-content">
			<div class="modal-header  modal-header-info ">
				<h5 class="modal-title">Modal Düzenle</h5>
				<button type="button" class="material-icons" data-bs-dismiss="modal">x</button>
			</div> 
			    Modal İçerik 
		</div>
	</div>
</div>

        var ModalActive = {
            'show': function(id) {   
                $('#' + id).modal('show'); 
                
                /// burası sonrası :)
                $.ajax({
                    url:'/Data/', 
                    type: 'post', 
                    data: {data}, 
                    dataType: "json",
                    success: function(response) { 
                        if(response.durum){ 
                            toastUser(response.mesaj);  
                        }
                    }
                });
            },
            'remove': function() {
            }
        }

Cevap yaz
Cevaplar (3)
ebykdrms
755 gün önce

Olması gerektiği gibi yazmışsınız. Çok daha kısa görünsün isterseniz aynı işi yapan bir döngü kullanabilirsiniz:

$("body").on("click", ".modal_pen", function(){
  Object.entries($(this).data()).map(data=>$("#"+data[0]).val(data[1]));
  $('#Guncelle').modal('show');
});

Ama a tag'ınıza yine data attribute'lerini girmeniz gerekiyor.

acemi
755 gün önce

@ebykdrms teşekkür ederim
istediğim gibi oldu daha kısa yazılsın istedim pek bilmiyorum js sadece mantık yürüterek biraz araştırdım atama yapmayı öyle yapmıştım
kısa hali daha işlevsel oluyor sadece öğrenmek için soruyorum.

data-veri giriyorsaum buton attr.. input id leride aynı isimde olmak zorunda sizin verdiğiniz cevaba göre ki eşleşmeyi ona göre mi sağlıyor.

   <a href="#" data-veri="veri" data-veri2="veri"></a>
   
   // giden modal input
   <input type="text" id="veri">
   <input type="text" id="veri2">
  // yok ise atıyorum a butonundaki data isimleri farkı
  giden modal inputundakiler farklı olsa yakalamaz sanırım :)
acemi
755 gün önce
function Value(id, veri){
    document.getElementById(id).value = veri;
}
        $("body").on("click", ".modal_pen", function (button) {
            var id          =   $(this).data('id'),
                veri1     =   $(this).data('veri1'),
                veri2       =   $(this).data('veri2'),
                veri3       =   $(this).data('veri3'),
                veri4      =   $(this).data('veri4');
                
                Value("id", id);
                Value("veri2", veri2);
                Value("veri3", veri3);
                Value("veri4", veri4); 
                $('#Guncelle').modal('show'); 
        });

bu şekilde yaptım fakat bunun daha kolay bir yöntemi olması gerekiyor diye düşünüyorum.
tıklanan a tagına bütün verileri data-veri şeklinde girmek gerekiyor
js tarafında aynı verileri tek tek işlemek gerekiyor vs .

daha kısa bir çözümü olan varmı acaba.