2013-06-24 31 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. 
)