• 1399/08/26

داشتن چند modal در صفحه :

سلام

من یک html ثابت رو می خوام چند بار در modal بالا بیارم و هر بار مقداری رو که بر می گردونه رو توی elment جداگانه ای ذخیره کنم.

آیا حتما باید چند modal تعریف کنم ؟ یا راهی هست که با یک modal و تغییر هر باره id اون و برگشت به id اول همه کارها رو در یک modal انجام بدم؟

اصولا این کار درسته ؟ یا به تعدادی که modal لازم داریم همه رو تعریف کنیم ؟

 

نمونه مثال من اینه که فرض کنید باید سه تا search box باز شه و اسم  سه تا شهر رو بپرسه و تو سه تا text نگه داره.

  • 1399/08/28
  • ساعت 12:31

سلام دوست من

ار هر دو روش میتونین استفاده کنین

با یک modal هم میشه این کار رو انجام داد

میتونین کدهای هر مرحله رو به این صورت بنویسین که display اونها none باشه و بعد از اتمام کار ، مرحله ی بعدی فعال بشه تا نمایش داده بشه

به همین صورت میتونین تا مرحله ی آخر پیش برید


  • 1399/08/28
  • ساعت 12:37

ممنون 

این ها پشت سر هم نمی خوان بیان ، جدا جدا هستند.

مثلا روی btn1 و btn2 

مشکلی که الان دارم اینه که partial من که توی modal میاد یه سری فیلد داره که می خوام وقتی modal بسته شد بریزم توی txt صفحه اصلی

مثلا txt1 با modal 1 و txt2 با modal 2

ولی مشکل اینه که modal2 که بسته میشه انگار همه modal.hide ها event شون فعال میشه !! و همه txt ها مثل هم شبیه آخرین modal میشن.

این نمونه کد منه ، مثل این PODId ، من POLId هم دارم که با همین modal اون هم عوض میشه !

 $('#SearchPODModal').on('hidden.bs.modal',
                    function () {
                        $('#PODId').val($("#SelectedLocationId").val());
                        $('#PODCode').val($("#SelectedLocationCode").val());
                        $('#PODName').val($("#SelectedLocationName").val());
                                               
                    });

  • 1399/08/28
  • ساعت 12:40

قبل از بسته شدن modal باید مقادیر دریافت بشن دوست من ( منظورم قبل از رویداد بسته شدن هستش )

خودتون به صورت دستی مقادیر رو دریافت کنین و درون متغیرهای مربوطه نگهداری کنین

برای بستن modal از کد خاصی استفاده میکنین؟

کد رو ارسال کنین


  • 1399/08/28
  • ساعت 22:14

توی مدال یه grid هست که مقدار های سطر اون رو دارم میریزم توی چند تا فیلد و اون فیلدها رو توی صفحه اصلی می خونم.

$("#btnModalSelect").click(function () {
            var items = {};
            var grid = $('#gridModal').data('kendoGrid');



            var row = grid.select();
            var data = grid.dataItem(row);
            if (data) {



                $('#SelectedLocationName').val(data.Name);
                $('#SelectedLocationCode').val(data.LocationCode);
                $('#SelectedLocationId').val(data.LocationId);
                				
                $('.modal').modal('hide');
            }
        });		

 

پ.ن : من با گرفتن مقادیر از modal مشکلی ندارم ، مشکلم اینه که ظاهرا چون مقادیر همنام هستند ، هربار که یه modal جدید باز می کنم این مقادیر همه قبلی ها رو هم عوض می کنه.

مثلا با btn1  مودال رو باز کردم و تو مرحله hide  مقدارهاش رو ریختم تو txt1

حالا زمانی که btn2 و modal2 کار می کنند ، مقدار برگشتی هم تو txt1 میشینه هم تو txt2 !!

 

این نمونه کد صدا زدن modal منه ، شاید با js مشکل دارم و نمی فهمم ! آیا یه event که زیر محموعه یه event دیگه بوده ، بدون اینکه بالاتری اجرا بشه ، چرا اجرا میشه.

مثلا تو کد زیر اگه اصلا $("#SearchFPD").click اجرا نشده ، چرا event خروج modal با یه modal دیگه اجرا میشه . عملا با گذاشتن consol.log فهمیدم همه event های خروج به دلیل هم نامی modal ها با هم اجرا میشن !

$(function () {

            $("#SearchFPD").click(function () {
                console.log("Hi FPD");

                var myCode = $('#FPDCode').val();
                var options = { "backdrop": "static", keyboard: true };
                $.ajax({
                    type: "GET",
                    url: '/MasterData/Location/Search/?Code=' + myCode,
                    contentType: "application/json; charset=utf-8",
                    datatype: "json",
                    success: function (data) {

                        $('#SearchFPDModal').draggable();
                        $('#SearchFPDModalContent').html(data);
                        $('#SearchFPDModal').modal(options);
                        $('#SearchFPDModal').modal('show');

                    },

                    error: function () {
                        alert("Dynamic content load failed.");
                    }
                });
                $('#SearchFPDModal').on('hidden.bs.modal',
                    function (event) {
                        $('#FPDId').val($("#SelectedLocationId").val());
                        $('#FPDCode').val($("#SelectedLocationCode").val());
                        $('#FPDName').val($("#SelectedLocationName").val());
                        console.log("bye FPD");


                    });
            });
        });