Как я могу включить поле формы в моем POST, если оно не в текущей форме? - PullRequest
2 голосов
/ 11 декабря 2011

У меня есть страница, которая отображает фотографию, загруженную пользователем. У меня есть две формы, которые обеспечивают два разных действия. Первая форма replace_photo_form - это просто кнопка, которую пользователь нажимает, чтобы заменить фотографию. Вторая форма next_page_form представляет собой поле для ввода подписи к фотографии, а также кнопку для перехода на следующую страницу. Когда пользователь нажимает кнопку next_page, он должен сохранить заголовок в БД и перейти к следующей странице.

<body>
  <form id="replace_photo_form">
    <input type="text" name="caption" />
    <input type="submit" name="replace_photo" value="Replace Photo" />
  </form>

  <div>
    <p>This is where some other information is located</p>
  </div>

  <form id="next_page_form">
    <input type="submit" name="next_page" value="Next Page" />
  </form>
</body>

Я хочу, чтобы поле заголовка отображалось непосредственно рядом с кнопкой replace_photo в структуре страницы, поэтому я включил его в replace_photo_form. Проблема в том, что когда я нажимаю кнопку next_page, она не сохраняет значение POST для поля ввода заголовка, как мне бы хотелось. В идеале я бы просто включил поле заголовка в next_page_form, чтобы сохранить заголовок как значение POST, но мне нужно, чтобы оно отображалось рядом с кнопкой замены фотографии.

Как я могу включить поле формы в свой POST, если его нет в текущей форме?

Ответы [ 3 ]

3 голосов
/ 11 декабря 2011

Объедините две формы в одну, охватывающую обе кнопки отправки (она все равно будет включать ввод данных).

Затем, когда форма отправлена, вы можете проверить, какое из значений (next_page)или replace_photo) существует в $_POST, поэтому обнаруживает, какая кнопка была нажата и какое действие необходимо предпринять.

Этот метод будет работать правильно, даже если Javascript отключен.Если вы хотите ослабить это ограничение, существуют десятки других опций (например, перехват события submit формы для копирования значения текстового поля из другой формы в скрытое поле текущей формы).

1 голос
/ 11 декабря 2011

Одна из возможностей - добавить слушателя к полю, связывающему его значение со скрытым полем во второй форме:

<form id="replace_photo_form">
    <input type="text" name="caption" 
        onchange="document.getElementById('next_page_form_caption').value = this.value;"/>
    ..
</form

<form id="next_page_form">
    <input type="hidden" id="next_page_form_caption" name="caption"/>
    ..
</form>
0 голосов
/ 11 декабря 2011

Вы имеете в виду replace_photo_form отправить до нажатия кнопки next_page, вы можете просто добавить кнопку onclick к next_page, например:

<input type="submit" name="next_page" value="Next Page" onclick="document.getElementById("replace_photo_form").submit();" />

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...