2009-11-09 19 views
24

Tıklandığında bir iletişim kutusu açan bir düğmem var. İletişim kutusu, gizlenmiş bir div görüntüler.jquery ui iletişim kutusu yalnızca bir kez açılır

X simgesini tıklatarak iletişim kutusunu kapattıktan sonra iletişim kutusu tekrar açılamaz.

+5

posta kodu veya bağlantı ... :-( – beggs

+0

Ne kodu unutma, gizlemek ve iletişim göstermek –

+0

bazı kod harika olurdu genellikle için kullandığınız emin olmak için size kapanırken/sırasında herhangi bir hataya neden olmaz – helloandre

cevap

39

Scott Gonzalez halkının sebebi sürü bahsediyor son blog yazısında jQuery UI ile başlarken bu sorun var: http://blog.nemikor.com/2009/04/08/basic-usage-of-the-jquery-ui-dialog/

bir alıntı:

kullanıcılar genellikle diyaloglar ile karşılaşacak

sorun onlar örneğini yeni bir iletişim kullanıcı genellikle al tıklayarak biraz hareket (gerçekleştiren her zaman çalışmalarıdır mürekkep veya düğmesi). Bu anlaşılır bir hatasıdır, çünkü ilk bakışta , öğesindeki .dialog() öğesinin, iletişim kutusunun açmasına neden olan şeydir. Gerçekte olan, olan yeni bir iletişim örneğinin oluşturulduğunu ve bu örneğin örneğinin örneğinin hemen ardından açıldığını gösterir. iletişim kutusunun açılmasının nedeni, iletişim kutusunun ve autoOpen seçeneğine sahip olmasıdır, bu değer varsayılan olarak geçerlidir. Bir kullanıcı .dialog() 'u bir öğeye iki kez çağırdığında, iletişim kutusu öğesinin zaten öğesinde zaten oluşturulduğundan, ikinci çağrısı yoksayılır.

Çözüm:

bu soruna basit bir çözüm kendaç false olarak ayarlanmış ile iletişim örneğini ardından olay işleyicisi içinde ('açık') .dialog aramak olduğunu. i bir asp.net updatepanel bu kullanırken dikkat etmek gerektiğini eklemek istiyorum kabul edilen yanıt istinaden ilave olarak

$(document).ready(function() { 
    var $dialog = $('<div></div>') 
     .html('This dialog will show every time!') 
     .dialog({ 
      autoOpen: false, 
      title: 'Basic Dialog' 
     }); 

    $('#opener').click(function() { 
     $dialog.dialog('open'); 
    }); 
}); 
+0

Eğer diyalog başlatılır ve olayda gösterilirse ne olur? Performans riski var mı yoksa sadece kötü bir uygulama mı? –

+0

çalışmıyor, belki bu iletişim kutusunun kötü bir tasarımı mı? – jpganz18

8

UI iletişim kutusunu kullanıyor musunuz? Soruna neden olan şeyi görebilmemiz için bazı kodlar göndermelisiniz. Ama burada bir tahmin var (çünkü aynı hatayı yakın zamanda yaptım). UI iletişim kutusunu kullanarak iletişim kutusunu yalnızca bir kez başlatmanız gerekir.

$(document).ready(function() { 
    $('#dialog').dialog({ 
    autoOpen:false, 
    modal:'true', 
    width:450, 
    height:550 
    }); 
$('#MyButton').click(openDialog);  

}); 

Bu kod, iletişim kutusunu başlatır, ancak göstermez. OpenDialog işlevi daha sonra MyButton tıklandığında iletişim kutusunu açar. (JQuery UI Takımı)

var openDialog = function(){ 

     $('#dialog').load('loadurl.php');//load with AJAX 

     //optionally change options each time it is clicked 
     $('#dialog').dialog('option', 'buttons',{ 
      "Cancel":function(){ 
      $('#dialog').dialog('close'); 
      } 
     }); 

    //actually open the dialog 
    $('#dialog').dialog('open'); 

}; 
0

. Düğmeyi tıklarsanız, geri gönderme işlemi gerçekleşir, açılır pencere açılır, ancak gerçekleşen geri gönderme nedeniyle ikinci kez açılmaz. Bu nedenle, açılır pencereyi açmak için kullandığınız düğmenin geri gönderilmediğinden emin olmalısınız. yani:?.

<asp:LinkButton ID="btn1" runat="server" OnClientClick="return false;">Click me</asp:LinkButton> 
İlgili konular