Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Определение какая кнопка была нажата на форме (https://javascript.ru/forum/dom-window/19350-opredelenie-kakaya-knopka-byla-nazhata-na-forme.html)

Vampiref92 02.08.2011 15:36

Определение какая кнопка была нажата на форме
 
Как определить какая из кнопок была нажата?
Есть форма с инпутом, кучей полей, и 3 кнопками
надо сделать чтобы при нажатии на 1-ю кнопку происходило сохранение измененых значений на форме(тобишь как я думал вызывался метод submit формы) и происходил редирект

<form method="post" action="<?=POST_FORM_ACTION_URI?>" name="basket_form">
бла бла бла
<?if (in_array("QUANTITY", $arParams["COLUMNS_LIST"])):?>
<td class="cart-item-quantity"><input maxlength="18" type="text" name="QUANTITY_<?=$arBasketItems["ID"] ?>" value="<?=$arBasketItems["QUANTITY"]?>" size="3" onfocus="this.select()" ></td>
<?endif;?>
бла бла бла
<input type="submit" value="Продолжить заказ" name="BasketProd" id="basketprod" >
<input type="submit" value="<?echo GetMessage("SALE_UPDATE")?>" name="BasketRefresh" id="refresh">
<input type="submit" value="<?echo GetMessage("SALE_ORDER")?>" name="BasketOrder" id="basketOrderButton2">
</form>

<script type="text/javascript">
document.forms['basket_form'].onsubmit = function(){
Если нажата кнопка
{
document.location.href = 'ссылка';
}
else
{
return false;
}
};
</script>

SkyLight 02.08.2011 15:53

Если нужно определить на клиенте, то можно вешать обработчик на onclick кнопок. Если на сервере, то такой проблемы нет вообще, т.к., если мне память ни с кем не изменяет, то на сервер приходит только та кнопка, которая и была нажата, а остальные игнорируются.

Vampiref92 02.08.2011 17:02

проблема в том что если я вешаю onclick то на submit кнопке он не работает а на кнопке button он не сохраняет данные с формы так что этот метод не идет и обработка идет на клиенте поэтому я и хотел определить нажатие кнопки

dmitriymar 02.08.2011 17:06

обработчик события онклик на обычную кнопку. в обработчике какието запланированные действия и затем вызов метода submit формы.
Цитата:

Сообщение от Vampiref92
надо сделать чтобы при нажатии на 1-ю кнопку происходило сохранение измененых значений на форме(тобишь как я думал вызывался метод submit формы) и происходил редирект

с редиректом не ясно.у формы всегда будет редирект на страницу указанную в параметре action=" формы(если это не аякс)
для того чтоб отправить данные ,а затем перейти на другую абсолютно страницу -3 варианта
1-на сервере обрабатывать данные и делать редирект на другую страницу
2 вышеописанным методом вызывать метод сабмит формы,но на сценарии обработчике-после обработки результатов возвращать заголовок 204. при нём не будет перехода на страницу обработчик и затем делать редирект ,но уже на клиенте
3 использовать аякс

SkyLight 02.08.2011 17:12

Ну зачем на обычную? Все прекрасно и с сабмитами работает (вариант с применением jQuery, но запросто реализуется и без него).

dmitriymar 02.08.2011 17:21

Цитата:

Сообщение от SkyLight
Ну зачем на обычную? Все прекрасно и с сабмитами работает (вариант с применением jQuery, но запросто реализуется и без него)

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

SkyLight 03.08.2011 11:45

Не совсем понял, что именно блокируется. Ведь при таком раскладе сначала отрабатывает click, в котором можно, скажем, произвести какие-то манипуляции, специфичные для конкретной сабмит-кнопки), а потом срабатывает submit, где уже идет общая логика отработки перед отправкой.


Часовой пояс GMT +3, время: 14:43.