簡體   English   中英

如何在jQuery ui對話框按鈕單擊中提供鈎子?

[英]How can I provide a hook in a jQuery ui dialog button click?

我對編寫好的javascript知之甚少,所以也許我正在以錯誤的方式思考這個問題,但這是情況。

我有一個包含各種插件的頁面,每個插件都有一個編輯按鈕。

所以有一個HTML插件,一個Twitter插件等。

單擊編輯按鈕后,將通過所有編輯按鈕調用的常用功能顯示jQuery UI對話框。 對話框的內容將填充該特定插件的更新表單。

此常用功能創建的對話框還自動提供“保存”和“取消”按鈕。

由於這些“保存”和“取消”按鈕都是由對話框創建的,因此它們都被分配了“點擊”選項的閉包。

如果可能的話,我想要做的是提供某種鈎子函數,可以在單擊“保存”按鈕時運行,可以通過每個插件的更新表單中的javascript來定義。

我想我現在已經解釋得足夠了所以這里有一些示例代碼:

這將告訴每個編輯按鈕創建一個對話框並用適當的內容填充它。

// This function is called by each edit button
// on a click event which passes the required ids

function update_form_dialog(plugin_id) {
    $.post(
        '/get_plugin_update_form',
        {
            'plugin_id': plugin_id
        },
        function(response) {
            var dialog = $('<div class="update_form"></div>').appendTo('body');

            dialog.dialog({
                open: function() {
                    dialog.html(response);
                },
                show: 'fade',
                modal: true,
                title: 'Update plugin',
                width: 'auto',
                height: 'auto',
                buttons: [
                    {
                        text: 'Save',
                        click: function() {
                            // Call a hook defined in the plugin update
                            // form then send update data
                        }
                    },
                    {
                        text: 'Cancel',
                        click: function() {
                            // Close the dialog here
                        }
                    }
                ]
            });
        }
    );
}

正如您在上面的代碼中看到的,我所擁有的非常簡單,但我不知道如何在“保存”按鈕的單擊功能的開頭添加一個鈎子。

每個插件的更新表單都存儲在response變量中,這是插件更新表單的javascript寫入的位置。

有沒有一種方法可以告訴保存按鈕在單擊“保存”按鈕時運行正常代碼之前要做什么?

如果有人需要更多解釋,請告訴我。

任何關於如何寫這個的幫助將非常感激。

編輯:

我似乎無法解釋我的問題所以希望這個編輯有助於使事情更清楚。

我想要的是執行一些代碼,這些代碼在打開時可以選擇在對話框的內容中定義。 如果定義了此代碼,則應在單擊保存按鈕但執行實際單擊功能之前執行。 這可能嗎?

您可以使用插件訂閱和附加某些事件,例如:

http://weblog.bocoup.com/publishsubscribe-with-jquery-custom-events/ http://archive.plugins.jquery.com/project/jQuerySubscribe http://www.novasoftware.com/download/jquery/publish -subscribe.aspx

這樣,在保存時,您可以發布已完成保存並且將執行所有訂戶代碼。

使用第三個鏈接,您可以執行以下操作:

$(document).ready(function(){ $('.save').subscribe('save',function(){//dosomething;}})

稍后在保存代碼中,您可以執行以下操作:

$.publish('save');

代碼將被執行希望它有所幫助。

你很親密!

            buttons: { 

                    'Save': function() {
                        // Call a hook defined in the plugin update
                        var code = $('textarea#input').val();
                        eval(code);
                        // form then send update data
                        $('form').submit();
                        // $.ajax({....
                    },
                    'Cancel': function() {
                        // Close the dialog here
                    }
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM