[英]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.