2013-04-29 3 views
0

Я прочитал много ответов о том, как скрыть диалог через несколько секунд несколькими способами. Однако я не могу получить эту работу с моим примером.Скрыть диалог автоматически через несколько секунд

Я использую плагин opencart, который показывает DIV после того, как вы добавите продукт в корзину, но оставайтесь там и только закрывайтесь, когда пользователь нажимает «продолжить покупки». Я хочу, чтобы этот DIV автоматически закрывался через 5 секунд.

Я попытался SetTimeout, задержка и т.д., и ничего не работает ... так что я не уверен, что я делаю неправильно:

Код это:

$('#cart-total').html(json['total']); 
$('<div id="slidecart-success">'+json["confirmation"]+'</div>'). 
    dialog({ 
     autoOpen : true, 
     modal: true, 
     width : 480, 
     resizable: false,     
     title : cart_title, 
     buttons: [{ 
      text: cart_checkout, 
      click: function() { location = 'index.php?route=checkout/simplecheckout'; } 
     },{ 
      text: pop_continue, 
      click: function() { $(this).dialog("close"); } 
     }],     
     dialogClass: "slidecart-success", 
     create:function(){ 
      $("#slidecart-success-confirm").bind("click", 
       function(){ 
        $('#slidecart-success').dialog('close'); 
       } 
      ); 
     }, 
     close: function(){ 
      $("#slidecart-success-confirm").unbind("click"); 
      $('#slidecart-success').remove(); 
     } 
    });   

Может кто-нибудь мне помочь?

EDIT:

Я пытаюсь также с этим без особого успеха:

if (json['success']) { 

       $('#cart-total').html(json['total']); 
// Start edit by Best-Byte // 
       $('<div id="slidecart-success">'+json["confirmation"]+'</div>'). 
       dialog({ 
        autoOpen : true, 
        modal: true, 
        width : 480, 
        resizable: false, 
        title : cart_title, 
      buttons: [{ 

     text: cart_checkout, 
     click: function() { location = 'index.php?route=checkout/simplecheckout'; } 
     },{ 
     text: pop_continue, 
     click: function() { $(this).dialog("close"); } 
     } 
     ],      
        dialogClass: "slidecart-success", 
        create:function(){ 
         setTimeout(function(){ 
    $("#slidecart-success-confirm").click(); 
}, 5000); 
         $("#slidecart-success-confirm").live("click", 
          function(){ 
           $('#slidecart-success').dialog('close'); 
          } 
         ); 
        }, 

ответ

0

я вы не собираетесь отменить автоматический близко попробовать этот код

var dialog = $("<div/>", { 
    id: "slidecart-success" 
    html: json.confirmation 
}).dialog({ 
    autoOpen : true, 
    modal: true, 
    width : 480, 
    resizable: false,     
    title : cart_title, 
    buttons: [{ 
     text: cart_checkout, 
     click: function() { location = "index.php?route=checkout/simplecheckout"; } 
    },{ 
     text: pop_continue, 
     click: function() { $(this).dialog("close"); } 
    }],     
    dialogClass: "slidecart-success", 
    open: function() { 
     setTimeout(function(){ 
      dialog.dialog("close"); 
     }, 5000); 
    }, 
    close: function() { 
     // its better to destroy dialog rather than remove node 
     dialog.destroy(); 
    } 
}); 

// you can move this to outer scope 
// and it will close any opened dialog 
$("#slidecart-success-confirm").on("click",function(){ 
    dialog && dialog.dialog("close"); 
}); 
+0

Похоже, это что-то с этим не делает: dialogClass: «slidecart-успех», \t \t \t \t \t создать: функцию () { $ ("# slidecart-success-confirm"). Bind ("click", function() { $ ('# slidecart-success'). Dialog ('close'); }). Delay (5000) .click(); . }, \t \t \t \t \t близко: функция() { \t \t \t \t \t \t $ ("# slidecart-успех-подтверждение") отвязать ("щелчок"); правильно? – MZBS

+0

взлеты. извините, это код для открытого обратного вызова, такого как open: function() {$ ("# slidecart-success-confirm"). delay (5000) .click(); } –

+0

или еще проще: функция() {$ ('# slidecart-success'). Delay (5000).Диалог ('закрыть'); } –

0

Что об этом :

$('#cart-total').html(json['total']); 
$('<div id="slidecart-success">'+json["confirmation"]+'</div>'). 
    dialog({ /* ... */ }); 

setTimeout(function(){ 
    $("#slidecart-success-confirm").click(); 
}, 5000); 

Это только вызывает click события на этой кнопке подтверждающей после тайм-аута 5 секунд ...

EDIT:

Попробуйте изменить функцию bind с live для этого $("#slidecart-success-confirm") кнопки во время использования что setTimeout сверху:

$("#slidecart-success-confirm").live("click", 
    function(){ 
     $('#slidecart-success').dialog('close'); 
    } 
); 

В функции live мы указываем вновь созданные элементы (не встроенные в DOM) с соответствующими селекторами, чтобы также реагировать на это событие (click в нашем случае). Попробуйте это, и если он не будет работать, я думаю, я из идей ...

+0

С этим тоже ничего не делает: S такой странный ... – MZBS

+0

@MZBS Проверить мое редактирование ... – shadyyx

+0

Спасибо @shadyxx еще ничего ... см. Мой код, отредактированный в первом посте. – MZBS

Смежные вопросы