Изменить значение поля с помощью javascript при отправке

Мне нужно выполнить что-то подобное в форме CRUD (упрощенный пример):

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

Мне нужно изменить поле data перед отправкой. Событие выполняется, но поле не обновляется. Я предполагаю, что значения POST уже назначены, когда это событие запущено.

data — это текстовая область, скрытая компонентом TinyMCE, который я пытаюсь интегрировать в качестве дополнения. Все работает нормально, но когда форма отправляется через ajax, вам нужно вручную обновить текстовое поле из содержимого TinyMCE. Я пробовал много способов, в том числе «сырой» javascript (js("submit","document.getElementById(...)"), но до сих пор не повезло.

Знаете ли вы, как я могу изменить это поле перед отправкой?

Спасибо!!


person Jaume    schedule 24.06.2013    source источник
comment
хитрый вопрос :) несколько идей, прежде чем будет правильный ответ: уничтожьте кнопку, затем создайте новую, которая выполняет действие JS, затем отправляет + отключить ввод в форме (вот как: agiletoolkit.org/doc/form/enhancing). Другая идея состоит в том, чтобы назначить событие submit() в форме, а не в div. -›js(true)-›find('form')-›submit( ... ); Наконец, мы можем исправить form.js, метод submitForm с обратным вызовом (beforeSubmit)   -  person romaninsh    schedule 24.06.2013
comment
Спасибо Романы! Наконец, я решил изменить ui.atk4_form.js, добавив всего одну строку, которая запускает событие «до отправки». Я отправил запрос на включение в github, если вы хотите включить его в проект. Поскольку atk4_form использует предотвращение распространения по умолчанию, вы не можете просто привязать отправку события к форме, а другие решения слишком сложны для чего-то такого простого :)   -  person Jaume    schedule 25.06.2013


Ответы (1)


Решено добавление this.form.trigger('beforesubmit') в ui.atk4-form.js перед сериализацией данных формы.

Затем вы можете добавить в свой код:

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