2011-11-15 27 views
6

Đây là mã document.ready của tôi:Đi qua một giá trị vào một jQuery UI Dialog Box với một Function

$(document).ready(function() { 
    $("#dialogbox").dialog({ 
     open: function(event, ui) {$("a.ui-dialog-titlebar-close").remove();}, 
     bgiframe: true,autoOpen: false,closeOnEscape: false,draggable: false, 
     show: "drop",hide: "drop",zIndex: 10000,modal: true, 
     buttons: {'Ok': function() {$(this).dialog("close");processEmp();}} 
    }); 
}); 

Tôi có mã javascript sau đó mất một tham số:

function test(pEmp) 
{ 
    var a = pEmp.value); 

    $('#dialogbox').dialog('open'); 
} 

Câu hỏi của tôi , dựa trên giá trị mà tôi chuyển vào hàm thử nghiệm của tôi, lần lượt gọi hộp thoại jQuery UI của tôi ('#dialogbox'), khi người dùng nhấn nút 'Ok' trong hộp thoại, tôi cần bằng cách nào đó (đó là những gì Tôi không chắc chắn làm thế nào để làm), vượt qua biến "a" mà giữ pEmp.value của tôi, vào processEmp chức năng khác của tôi (a?), Mà Tôi đã gắn vào nút 'Ok' của tôi.

Hy vọng ai đó có thể giúp về cơ bản tôi cần giá trị này khi người dùng xác nhận hộp thoại.

Cảm ơn.

Trả lời

6

Bạn có thể vượt qua tùy chọn tùy chỉnh để thoại trước khi mở nó:

$(function() { 
    $("#dialog").dialog({ 
      open: function (event, ui) { $("a.ui-dialog-titlebar-close").remove(); }, 
      bgiframe: true, 
      autoOpen: false, 
      closeOnEscape: false, 
      draggable: false, 
      show: "drop", 
      hide: "drop", 
      zIndex: 10000, 
      modal: true, 
      buttons: { 'Ok': function() { 
       $(this).dialog("close"); 
       processEmp($(this).data("pEmpValue")); 
      } 
      } 
    }); 
}); 

function processEmp(a) { 
    alert(a); 
} 

function test(pEmp) { 
    $("#dialog").data("pEmpValue", pEmp.value).dialog("open"); 
} 

Hoặc thậm chí là giải pháp đơn giản nhất là tuyên bố a biến trong phạm vi của cửa sổ:

var a = null; 

$(function() { 
    $("#dialog").dialog({ 
      open: function (event, ui) { $("a.ui-dialog-titlebar-close").remove(); }, 
      bgiframe: true, 
      autoOpen: false, 
      closeOnEscape: false, 
      draggable: false, 
      show: "drop", 
      hide: "drop", 
      zIndex: 10000, 
      modal: true, 
      buttons: { 'Ok': function() { 
       $(this).dialog("close"); 
       processEmp(a); 
      } 
      } 
    }); 
}); 

function processEmp(a) { 
    alert(a); 
} 

function test(pEmp) { 
    a = pEmp.value; 
    $("#dialog").dialog("open"); 
} 
+1

Điều này có vẻ như hành vi không được hỗ trợ và tôi sẽ không muốn dựa vào nó. Các tài liệu nói rằng phương pháp tùy chọn là để chuyển một 'tùy chọn hộp thoại' mà tôi có nghĩa là một trong các tùy chọn được xác định. – BNL

+0

@BNL, bạn có một điểm. Trong câu hỏi này được đề xuất sử dụng phương thức .data() thay vì tùy chọn tùy chỉnh: http://forum.jquery.com/topic/using-custom-options-in-jquery-ui-dialog –

4

Bạn có thể thực hiện việc này bằng cách thêm trình xử lý sự kiện để 'đóng'. Một cái gì đó như thế này:

$("#dialogbox").bind("dialogclose", function(event, ui) { processEmp(a); }); 
+0

Nó cũng có thể được chỉ định trong các tùy chọn gốc bằng 'close' (giống như OP bị ràng buộc' mở'). – BNL

+0

Đánh giá cao sự giúp đỡ của bạn @Dmitry nhưng tôi không chắc chắn làm thế nào tôi móc này với mã của tôi ở trên. Tôi vẫn giữ nút 'Ok' trong hộp thoại của mình? – tonyf

+0

Có, bạn nên giữ trình xử lý 'Ok' để đóng hộp thoại. Khi hộp thoại đóng 'hộp thoạiđóng' sự kiện sẽ kích hoạt. –

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