我有一個帶有下拉選擇元素的表單,用戶有時需要添加一個「select」元素。所以,我添加了一個鏈接來打開Modal Frame窗體,創建了Modal Frame窗體,並使其_submit()函數將新數據添加到包含select元素選項的表中。然後它將新的ID和名稱返回給Javascript回調(Modal框架的方式),並且JS回調將新元素添加到下拉列表中,並使用JQuery將其作爲瀏覽器中當前選定的元素。這一切都很好。Drupal不會讓JQuery添加到自定義表單中的選擇列表中
最後,用戶提交原始表單,並得到錯誤「已檢測到非法選擇,請與網站管理員聯繫。」
表單構建函數從數據庫中創建選項列表(我選中)包含新選項,所以我猜測Drupal使用表單的緩存版本而不是在它做之前重新構建它自動驗證。如果您返回一頁,然後轉發,新添加的選項就在列表中。
我嘗試添加:
global $GLOBALS;
$GLOBALS['conf']['cache'] = FALSE;
一個構建有問題的頁面中的功能,但它並沒有區別。
供參考:如果它很重要,這是多頁表格的一部分。
我也想過試圖將該選項添加到「子」形式_submit()函數的「父」形式的緩存版本,但不知道如何獲取「父」形式的form_build_id 。此外,這似乎太像一個kludge(雖然我可能是錯誤的)。
想法?