2013-06-24 57 views
2

我需要在一個CRUD的形式來執行這樣的事情(例如簡化):與JavaScript的變化字段值提交

$crud->form->js('submit',$crud->form->getElement('data')->js()->val('My text')); 

我需要改變data場之前提交。該事件已執行但字段未更新。我猜這個事件被觸發時,POST值已經被分配了。

data是一個隱藏在TinyMCE組件中的textarea,我試圖將它作爲一個插件來集成。所有工作正常,但是當表單通過ajax發送時,您需要手動更新TinyMCE內容中的textarea。我已經測試了很多方法,包括「原始」javascript (js("submit","document.getElementById(...)"),但直到現在還沒有運氣。

你知道我怎麼能在提交前改變這個字段?

謝謝!

+2

棘手的問題:)一些想法之前有一個合適的回答: 破壞按鈕,然後創建一個新的執行JS的動作然後提交+禁止進入上表單(這裏是如何:http://agiletoolkit.org/doc/form/enhancing)。另一個想法是在表單上分配submit()事件,而不是div。 - > js(true) - > find('form') - > submit(...);最後,我們可以修補form.js,submitForm方法和回調(beforeSubmit) – romaninsh

+1

謝謝羅馬人!最後,我決定修改ui.atk4_form.js,添加一條啓動事件'beforesubmit'的行。如果你想將它包含在項目中,我向github發送了一個pull請求。由於atk4_form使用preventDefault停止傳播,因此您不能簡單地將事件提交綁定到表單,然後其他解決方案對於如此簡單的事情來說太複雜了:) – Jaume

回答

1

在形成數據序列化之前,在ui.atk4-form.js中解決了添加this.form.trigger('beforesubmit')的問題。

然後,您可以添加在你的代碼:

$form->js('beforesubmit', ... 
    //Changes to fields done here are submitted because form fields are still not processed. 
)