2010-05-29 44 views
54

Cách đóng Hộp thoại jQuery trong hộp thoại mà không cần sử dụng nút đóng?Cách đóng Hộp thoại jQuery trong hộp thoại?

Bên trong hộp thoại ui là một yêu cầu biểu mẫu đơn giản và nếu gửi thành công xảy ra, hộp thoại ui sẽ tự động đóng và làm mới trang gốc.

<script type="text/javascript"> 
     $(document).ready(function() { 
      $("#form-dialog").dialog({ 
       autoOpen: true, 
       modal: true, 
       width: 200, 
       draggable: true, 
       resizable: true 
      }); 
     }); 
    </script> 


    <div id="form-dialog" title="Form Submit"> 
    <form action="default.aspx" method="post"> 
    <input type="text" name="name" value=" " />  
    <input type="submit" value="submit" /> 

    <a href="#" id="btnDone">CLOSE</a> 

    <script type="text/javascript"> 
    $(document).ready(function() { 
     $("#btnDone").click(function() { 
      $(this).dialog('close'); 
     }); 
    }); 
    </script> 

    </form> 
    </div> 

-imperialx

Trả lời

51

bạn có thể đóng nó lập trình bằng cách gọi

$('#form-dialog').dialog('close') 

bất cứ khi nào bạn muốn.

+0

Nhưng thẻ biểu mẫu nằm trong hộp thoại ui. Không có tệp jquery nào bên trong hộp thoại ui, chỉ cần gửi thẻ mẫu đơn giản. Làm cách nào để sử dụng $ ('# form-dialog'). Close() bên trong hộp thoại # form? Nó giống như đóng chính nó sau khi bạn nhấp vào một cái gì đó hoặc một bộ đếm thời gian chờ đợi xảy ra bên trong hộp thoại ui. – imperialx

+0

nếu bạn đang sử dụng jquery để mở hộp thoại, bạn có thể sử dụng jquery để đóng nó. trong dòng ngay bên dưới nơi bạn khai báo hộp thoại, đặt '$ ('# mySubmitButton'). sống ('click', function() {mySubmitFunction(); $ ('# form-dialog'). close();}); ' – Jason

+0

Có, nhưng khi tôi ở trong hộp thoại thì sao? Tôi nghĩ rằng tương đương với điều này là một cái gì đó giống như $ (cửa sổ) .unload(), nơi các hình thức pop-up tự động đóng chính nó hơn là nhấp vào nút đóng jquery-ui-hộp thoại. – imperialx

14

Bạn cần

$('selector').dialog('close'); 
+0

Xin chào redsquare, tôi đã thêm một vài dòng trên mã của tôi ở trên, tôi có thể biết tại sao nó sẽ không đóng hộp thoại? Như bạn có thể thấy, nút đóng nằm bên trong hộp thoại ui. Cảm ơn. – imperialx

+0

vì trong trường hợp của bạn, điều này ám chỉ đến nút không phải là hộp thoại – redsquare

+0

thay đổi $ (this) thành $ ("# form-dialog") – redsquare

0

     $(document).ready(function() { 
      $("#form-dialog").dialog({ 
       autoOpen: true, 
       modal: true, 
       width: 200, 
       draggable: true, 
       resizable: true, 
       buttons: { 
        "Close": function() { 
         $("#idDialog").dialog("close"); 
        } 
       } 
      }); 
     }); 

Điều này sẽ làm cho bạn một nút để đóng. bạn cũng có thể gọi hàm đóng

$("#idDialog").dialog("close"); 

trong một số chức năng để thực hiện việc này. hoặc thậm chí trong một nút/A EDIT

< a href="javascript:void(0);" id="btnDone" 
           onClick="$("#idDialog").dialog("close");">CLOSE</a> 

: bạn cần điều này để bao gồm thoại của bạn vào mẫu:

open: function (type, data) { 
      $(this).parent().appendTo($("form:first")); 
     } 
59

Hãy thử này

$(this).closest('.ui-dialog-content').dialog('close'); 

Nó sẽ đóng hộp thoại bên trong nó.

+1

xuất sắc. chính xác những gì tôi muốn! – Somedeveloper

2

thay thế một chuỗi để

$("#form-dialog").dialog('close'); 

$ (này) ở đây có nghĩa là một đối tượng $ ("# btnDone")

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#form-dialog").dialog({ 
      autoOpen: true, 
      modal: true, 
      width: 200, 
      draggable: true, 
      resizable: true 
     }); 
    }); 
</script> 


<div id="form-dialog" title="Form Submit"> 
<form action="default.aspx" method="post"> 
<input type="text" name="name" value=" " />  
<input type="submit" value="submit" /> 

<a href="#" id="btnDone">CLOSE</a> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#btnDone").click(function() { 
//I've replaced next string 
// $(this) here means another object $("#btnDone") 
    $("#form-dialog").dialog('close'); 
    }); 
}); 
</script> 

</form> 
</div> 
6
$(this).parents(".ui-dialog-content").dialog('close') 

đơn giản, tôi muốn chắc chắn rằng tôi don' t:

  1. hộp thoại mã hóa cứng #id giá trị.
  2. Đóng tất cả các hộp thoại.
0

Thêm liên kết này trong mở

$(this).parent().appendTo($("form:first")); 

tác phẩm hoàn hảo.

6

Đóng từ iframe bên trong một hộp thoại:

window.parent.$('.ui-dialog-content:visible').dialog('close'); 
3

Sau khi kiểm tra tất cả các câu trả lời trên mà không may mắn, mã folling làm việc cho tôi để giải quyết vấn đề:

$(".ui-dialog").dialog("close"); 

Có lẽ đây sẽ là cũng là một thử tốt nếu bạn tìm kiếm giải pháp thay thế.

Các vấn đề liên quan