2010-01-17 55 views
0

我正在使用Drupal 6並安裝了AJAX模塊。我有以下代碼:Drupal:如何在使用AJAX按下'刪除'按鈕後修改表單ui?

function remove_manufacturer_role_form($form_state) { 
    $form['#ajax'] = array(
    'enabled' => TRUE 
); 
    $form['hidden'] = array('#type' => 'value', '#value' => 'is_it_here'); 
    $form['submit'] = array('#type' => 'submit', '#value' => t('Remove yourself as manufacturer')); 
    return $form; 
} 

function remove_manufacturer_role_form_submit($form, &$form_state) { 
    $current_vars = ogrolerequestmanufacturerblock_get_current_vars(); 

    if($current_vars) 
    { 
    $curr_gid = $current_vars['current_gid']; 
    $curr_uid = $current_vars['current_user_id']; 
    $delete_query = "DELETE FROM {og_users_roles} WHERE rid in (SELECT rid FROM {role} WHERE name='Manufacturer') AND uid=$curr_uid AND gid=$curr_gid"; 
    if(db_query($delete_query)) 
     drupal_set_message("You successfully removed yourself as a manufacturer from this project"); 
    } 
} 

基本上,我有一個窗體來刪除用戶作爲一個項目中的製造商。用戶有能力刪除自己。這種形式允許用戶點擊一個按鈕,該按鈕依次使用AJAX提交表單,從數據庫中刪除用戶作爲製造商的角色,並通知用戶它是否成功。它成功地使用AJAX進行調用並刪除角色,但它仍然具有顯示的刪除按鈕。如果用戶再次點擊該按鈕,它會給出一個錯誤b/c,沒有什麼可以刪除的。這是好的,我想,B/C它不是一個致命的錯誤,並不會影響任何東西......但是,這對用戶來說並不美觀。

有沒有一種方法可以刷新模塊的塊或修改提交後顯示的表單?

編輯:

這似乎是一個很好的解決方案,但我不能完全似乎得到它的工作。我在我的模塊中包含了delete.js javascript:

/** 
* Ajax Forms plugin for ogrolerequestmanufacturerblock 
* 
* @param {String} hook 
* @param {Object} args 
* @return {Bool} 
*/ 

Drupal.Ajax.plugins.ogrolerequestmanufacturerblock = function(hook, args) { 
alert('it got into javascript!'); 
    if (hook === 'submit') { 
     alert('submit called within javascript!'); 
    } 
    return true; 
} 

它似乎從來沒有進入這個JavaScript函數。 drupal如何知道調用這個特定的函數?

回答

1

您可以通過AJAX檢查返回值,如果刪除成功,您可以在刪除按鈕上執行display: none

看看AJAX模塊文檔,我認爲你需要實現Drupal.Ajax.plugins.FOO(hook, args)。當hook == complete時,您可以將您的按鈕設置爲display: none

+0

我進入了JavaScript,不知道我改變了什麼,但最終開始工作。現在我所要做的就是使用javascript和「display:none」來獲得按鈕,然後我應該完成。非常感謝沒有人願意回答的有用答案。額外的布朗尼點! – 2010-01-26 18:43:13