Прототип: в Form.serialize отсутствуют некоторые входные данные (из-за таблицы?) - PullRequest
0 голосов
/ 09 марта 2010

Я использую прототип JavaScript (через Ruby on Rails) для обработки некоторых вызовов Ajax; но в одном конкретном случае мне не хватает поля в форме.

У меня есть такой макет:

+---------+---------+
| Thing 1 | Thing 2 |
+---------+---------+-----------+
| o Opt 1 | o Opt 1 | <Confirm> |
| o Opt 2 | o Opt 2 |           |
+---------+---------+-----------+

Опция 1 и 2 - это переключатели, кнопка подтверждения - кнопка. Вся таблица обернута в форму с кодом:

<form action="javascript:void(0)">
  <input type="hidden" name="context" value="foo" />
  <input type="hidden" name="subcontext" value="bar" />
  <table>
    <tr><td>Thing 1</td><td>Thing2</td></tr>
    <tr><td>
      <input type="radio" name="choice" value="1.1" />Opt 1<br />
      <input type="radio" name="choice" value="1.2" />Opt 2<br />
    </td><td>
      <input type="radio" name="choice" value="2.1" />Opt 1<br />
      <input type="radio" name="choice" value="2.2" />Opt 2<br />
    </td><td>
      <input name="choice_btn" type="button" value="Confirm"
             onclick="new AJAX.Updater('my_form', '/process_form',
                      {asynchronous:true, evalScripts:true,
                       parameters:Form.serialize(this.form)});
                       return false;" />
    </td></tr>
  </table>
</form>

Но я вижу, что POST, генерируемый нажатием кнопки «Подтвердить», содержит значения foo и bar для скрытых полей, но не выбор переключателей.

Это потому, что у меня есть таблица внутри моей формы? Как я могу обойти это?

1 Ответ

0 голосов
/ 09 марта 2010

Найдена проблема, которая не видна из вставленного кода выше. Перед построением запроса AJAX обработчик onclick отключает ряд объектов формы, включая переключатели и саму кнопку. Если я перенесу эти шаги в параметр AJAX onLading, все будет отправлено.

...