Изменение значений формы после нажатия кнопки отправки

[EDIT] После многократного поиска я узнал, что проблема заключается в том, как я интегрировал CKEditor в свою страницу. Простой и понятный способ работает в этом случае, как это принято в принятом ответе.

Привет,

Мне нужно изменить значения формы после нажатия кнопки отправки, но до фактического представления.

Я попытался подключиться к событию "отправить" формы и изменить значения текстового поля там вручную, но похоже, что это фактически не изменяет представленные значения.

Любые идеи?

Ответы

Ответ 1

Мне интересно ваше утверждение о том, что обработчик submit не работал для вас. Это для меня. Я использовал его в течение многих лет, чтобы заполнить скрытые поля перед отправкой форм; должен работать и для других полей формы.

Пример (живая копия):

HTML:

<form id='theForm'
    action='http://www.google.com/search'
    method='GET' target='_new'>
      <label>Search for:
        <input type='text' name='q' id='txtSearch'></label>
      <input type='submit' id='btnSearch' value='Search'>

JavaScript:

window.onload = function() {

  document.getElementById('theForm').onsubmit = function() {
    var txt = document.getElementById('txtSearch');
    txt.value = "updated " + txt.value;
  };
};​

Протестировано и работает над IE6 и IE7 в Windows, а также Chrome, Firefox и Opera в Linux.


Обновить. На основе вашего комментария ниже вы используете jQuery. Работает отлично, используя jQuery для всего:

$('#theForm').submit(function() {
  var txt = $('#txtSearch');
  txt.val("updated " + txt.val());
});

Пример в реальном времени Протестировано и работает над одним и тем же набором браузеров. В этой версии используется более открытый поиск, а не id, а также все еще работает.

Ответ 2

Вам нужно предотвратить действие отправки по умолчанию, а затем повторно отправить форму самостоятельно:

$('form').submit(function(e) {
    e.preventDefault();

    // do your processing

    this.submit(); // call the submit function on the element rather than 
                   // the jQuery selection to avoid an infinite loop
});

Ответ 3

Вы пытались добавить функцию на событие click JavaScript на кнопку отправки и изменять значения? Он может работать, потому что клиент script выполнит первый