1

ビューページにポップアップロードモーダルを表示しています..一定時間後に正常に表示および非表示になります。

これが私のコードです:

function openSirenModal() {
    var timeout;

    $.modal({
        contentAlign: 'center',
        width: 240,
        title: 'Loading',
        content: '<div style="line-height: 25px; padding: 0 0 10px"><span id="modal-status">Contacting to the device...</span><br><span id="modal-progress">0%</span></div>',
        buttons: {},
        scrolling: false,
        actions: {
            'Cancel': {
                color: 'red',
                click: function (win) {
                    win.closeModal();
                }
            }
        },
        onOpen: function () {
            // Progress bar
            var progress = $('#modal-progress').progress(100, {
                size: 200,
                style: 'large',
                barClasses: ['anthracite-gradient', 'glossy'],
                stripes: true,
                darkStripes: false,
                showValue: false
            }),

                // Loading state
                loaded = 0,

                // Window
                win = $(this),

                // Status text
                status = $('#modal-status'),

                // Function to simulate loading
                simulateLoading = function () {


                    var siren = "siren"
                    $.ajax({
                        type: "POST",
                        data: {
                            value: siren
                        },
                        url: "http://localhost/siren/siren/",

                        success: function (data) {

                            if (data == 1) {                                    progress.hideProgressStripes().changeProgressBarColor('green-gradient');
                                status.text('success!');
                                setTimeout(function () {
                                    win.closeModal();
                                }, 1500);

                            } else {
                                progress.hideProgressStripes().changeProgressBarColor('red-gradient');
                                setTimeout(function () {
                                    win.closeModal();
                                }, 1500);

                                status.text('error!');
                            }
                        },
                        error: function () {
                            alert("error");
                            progress.hideProgressStripes().changeProgressBarColor('red-gradient');
                            setTimeout(function () {
                                win.closeModal();
                            }, 1500);
                            status.text('error!');
                        }
                    });
                };

            // Start
            timeout = setTimeout(simulateLoading, 2500);
        },
        onClose: function () {
            // Stop simulated loading if needed
            clearTimeout(timeout);
        }
    });
};

上記のコードは正常に動作します。これで、ajax 成功関数にいくつかのコードを追加しました。今はコード全体を書いているわけではありませんが、いくつかの変更を加えたコードを貼り付けているだけです:

var siren = "siren";
$.ajax({
    type: "POST",
    data: {
        value: siren
    },
    url: "http://localhost/siren/siren/",

    success: function (data) {
        alert(data);
        if (data == 1) {

            var auto_refresh = setInterval(

            function () {
                $.get('siren/sirenjson', function (datas) {

                    if (datas == 1) {

                        $('#modal-progress').hideProgressStripes().changeProgressBarColor('green-gradient');
                        $('#modal-status').text('success!');
                        setTimeout(function () {
                            clearInterval(auto_refresh);

                            * * win.closeModal(); * * //here i want to close the popup modal
                        }, 1500);    
                    }
                });
            }, 1000);    
        } else {
        }    
    },

ここでは win 変数にアクセスできません。また、ポップアップ モーダルを閉じることができるように woin 変数にアクセスするにはどうすればよいですか?

最終的なコード

function openSirenModal() {
   var timeout, win;
var progress;
var status;

$.modal({
    contentAlign: 'center',
    width: 240,
    title: 'Loading',
    content: '<div style="line-height: 25px; padding: 0 0 10px"><span id="modal-status">Contacting to the device...</span><br><span id="modal-progress">0%</span></div>',
    buttons: {},
    scrolling: false,
    actions: {
        'Cancel': {
            color: 'red',
            click: function (win) {
                win.closeModal();
            }
        }
    },
    onOpen: function () {
        // Progress bar
        var progress = $('#modal-progress').progress(100, {
            size: 200,
            style: 'large',
            barClasses: ['anthracite-gradient', 'glossy'],
            stripes: true,
            darkStripes: false,
            showValue: false
        }),

            // Loading state
            loaded = 0,

            // Window
            win = $(this),

            // Status text
            status = $('#modal-status'),

            // Function to simulate loading
            simulateLoading = function () {




            };

        // Start
        //timeout = setTimeout(simulateLoading, 2500);
    },


    onClose: function () {
        // Stop simulated loading if needed
        clearTimeout(timeout);
    }


});

var siren = "siren";
$.ajax({
    type: "POST",
    data: {
        value: siren
    },
    url: "http://localhost/siren/siren/",

    success: function (data) {
        alert(data);
        if (data == 1) {

            var auto_refresh = setInterval(
                function () {

                    $.get('siren/sirenjson', function (datas) {

                        if (data == 1) {

                            $('#modal-progress').hideProgressStripes().changeProgressBarColor('green-gradient');
                            $('#modal-status').text('success!');
                           setTimeout(function (win) {
          win.closeModal();
           clearInterval(auto_refresh);
      }, 1500,win);


                        }
                    });

                }, 1000);

            //modl.onClose;
            //alert('hello');



         } else {
            progress.hideProgressStripes().changeProgressBarColor('red-gradient');
            setTimeout(function () {
                win.closeModal();
            }, 1500);


            status.text('error!');
        }

        //clearTimeout(timeout);
    },
    error: function () {

        alert("error");
        progress.hideProgressStripes().changeProgressBarColor('red-gradient');
        setTimeout(function () {
            win.closeModal();
          }, 1500);
        status.text('error!');
    }
      });

  };
4

2 に答える 2

0

ミリ秒引数の後にパラメーターを渡します。

setTimeout(function (win) {
    win.closeModal();
    clearInterval(auto_refresh);
}, 1500,win);

ただし、このメソッドは、バージョン 10 未満の Internet Explorer で使用するために、このようなポリフィルでパッチを適用する必要があることに注意してください。

于 2013-08-19T08:30:22.673 に答える