Разделяйте кнопки отправки в формах, которые сообщают форму «действие» для публикации в разные файлы?

Я включил дополнительную кнопку Submit в моей форме, которую я собираюсь использовать так.

  1. Пользователь выбирает элемент
  2. Пользователь удаляет "Добавить другой элемент" Отправить кнопку в форме.
  3. Создайте POSTS для себя и перезагрузите страницу, чтобы пользователь мог добавить другой элемент
  4. Когда пользователь добавил несколько элементов, пользователь нажимает кнопку «Готово» Отправить.
  5. Форма отправляет в другой файл со всеми накопленными элементами.

У меня возникло непростое чувство, что это может быть невыполнимо только с PHP / HTML и что мне, возможно, придется использовать Javascript для изменения действия формы до того, как форма начнет данные POST?

Мысли и идеи?

благодаря

Вы можете использовать JavaScript для изменения формы, на основе которой нажата кнопка, или вы можете проверить серверную часть (то есть используя PHP), какую кнопку щелкнуть и действовать соответствующим образом.

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

На стороне клиента (т.е. с использованием JavaScript) вы привязываете обработчик к событию click-события кнопки, изменяете атрибут действия формы и отправляете его на новый адрес.

Вот пример на стороне клиента:

<!doctype html> <html> <head> <title>Form submit test</title> </head> <body> <form action="baz.html" method="post"> <input id="bar" type="submit" class="button" value="bar.html" name="" /> <input id="foo" type="submit" class="button" value="foo.html" name="" /> </form> <script> // Find the two buttons from the DOM and assign them to separate variables var barBtn = document.getElementById('bar'), fooBtn = document.getElementById('foo'); // Click-handler for the buttons. // NB! For this code to work as intended, it needs to run // in the context of the button, otherwise, the this-keyword // will not resolve correctly and this will result in an error // NB2! This code also requires that a button's value will be // the desired action handler. Usually you would probably not // do this, but use the button's name/value to lookup the // correct form action. function modifyAction(e) { this.form.action = this.value; } // Bind an event handler to an object // NB! This is not code you should use in production function bindEvent(target, event, callback) { if (target.addEventListener) { target.addEventListener(event, callback, false); } else if (target.attachEvent) { target.attachEvent('on' + event, callback); } } // Delegate creates a wrapping closure which binds the // original function's context to an object, ie ensuring // the this-keyword always refers to the same object when // the returned function is invoked. function delegate(context, method) { return function () { return method.apply(context, arguments); } } // Bind the click-event of the barBtb, and handle it // with the modifyAction-function bound to the barBtn. // Ie run the modifyAction function, with the this-keyword // bound to barBtn bindEvent(barBtn, 'click', delegate(barBtn, modifyAction)); // Same as above for fooBtn bindEvent(fooBtn, 'click', delegate(fooBtn, modifyAction)); </script> </body> </html> 

Для полноты, вот пример jQuery:

 <form action="baz.html" method="post"> <input id="bar" type="submit" class="button" value="bar.html" name="" /> <input id="foo" type="submit" class="button" value="foo.html" name="" /> </form> <script> // Jquery event-handlers are automatically bound to // the element selected, so using "this" is safe function modifyAction(e) { this.form.action = this.value; } // Bind the click-event on all input with type=submit $("input[type=submit]").click(modifyAction); </script> 

Дайте двум кнопкам отправки одинаковые имена, но разные значения. Вы можете проверить значение в вашем php-файле.

пример

 <form action="something.php" method="post"> <input type="submit" name="submit" value="one"> <input type="submit" name="submit" value="two"> </form> 

something.php

 switch( $_POST['submit'] ) { case 'one': case 'two': } 

Вы можете сделать это без javascript. Просто дайте названиям своих кнопок с разными значениями:

 <button type="submit" name="btn" value="addItem">Add item</button> <button type="submit" name="btn" value="finish">Finished</button> 

Теперь внутри скрипта вы публикуете форму, чтобы определить, какую кнопку нажали, просмотрев значение $_POST['btn'] и выполните соответствующие действия.