ФорумПрограммированиеPHP для идиотов → Несколько submit-кнопок у формы

Несколько submit-кнопок у формы

  • Коля Дубр

    Сообщения: 45 Репутация: N Группа: Адекваты

    Spritz 16 января 2011 г. 15:01

    Привет, друзья! Помогите мне, тупому.

    Есть форма, устроенная как визард (разбита по шагам). Соответственно, у формы есть кнопки "Сохранить все говно", и "Перейти к следующему шагу".

    <form method="POST">
    <input type="text" name="txt" value="Какой-то текст" /><br />
    <input type="submit" name="save" value="Сохранить все говно" />
    <input type="submit" name="next" value="Перейти к следующему шагу" />
    </form>
    <?
    echo "POST DATA:<pre>".print_r($_POST,1)."</pre>";
    ?>


    Позырить тут: http://anchors.ru/trash/submit_buttons.php

    Если чувак нажимает на кнопку, в $_POST появляется ключик с @name этой кнопки и все круто. Если же чувак субмитит форму нажатием "Enter", в $_POST появляется ключик с именем первой попавшейся кнопки, что меня не устраивает :( Я хочу, чтоб по дефолту работала кнопка "К следующему шагу". И чтоб эта кнопка располагалась справа (логично же, не?). И чтоб не долбиться с яваскриптом на клиенте. И чтоб не выдумывать косоебищную верстку.

    Скажите, может я в упор не вижу в спецухе HTML какой-нить волшебный атрибут типа default="true"???

    Спасибо.
    Спустя 219 сек.
    Ну короче я пока придумал так:
    <form method="POST">
    <input type="text" name="txt" value="Какой-то текст" /><br />
    <div style="display:none;"><input type="submit" name="default" value="FFF" /></div>
    <input type="submit" name="save" value="Сохранить все говно" />
    <input type="submit" name="next" value="Перейти к следующему шагу" />
    </form>


    Если кто придумает лучше - будет круто :)
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 16 января 2011 г. 15:37, спустя 35 минут 56 секунд

    Коля Дубр, ну первое, что пришло в голову, это разместить кнопку "к следующему шагу" перед "сохранить". но стилями её отображать справа.
  • Коля Дубр

    Сообщения: 45 Репутация: N Группа: Адекваты

    Spritz 16 января 2011 г. 17:14, спустя 1 час 37 минут 46 секунд

    Givi, в частном случае это нормальный вариант, но мне хочется сразу вмандить решение в кусок фреймворка, занимающийся сборкой форм. соответственно, нужно решение, не связывающее логику работы со способом отображения. вариант со скрытым субмитом, который выводится перед всеми прочими в этом смысле лучше - можно рендерить видимые кнопки любым способом и в любой последовательности.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 16 января 2011 г. 17:58, спустя 43 минуты 21 секунду

    tabindex?
    Спустя 154 сек.
    или вещать на события onkeypress элементов формы обработчики
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 16 января 2011 г. 18:33, спустя 34 минуты 59 секунд

    сделай батонам float:right
    не всё полезно, что в swap полезло
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 16 января 2011 г. 20:04, спустя 1 час 31 минуту 2 секунды

    можно ваще как вариант вырубить enter
    Спустя 18 сек.
    и ваще написать свою форму, без тега form
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 16 января 2011 г. 20:09, спустя 5 минут 4 секунды

    <script type="text/javascript">
    function myformsubmit()
    {
    // тут собираешь все поля тега myform или тупо проставляешь id к каждому input'у
    window.location.href = "http://"+window.location.hostname+"/kuda.php?"; // и сюда добавляешь эти поля хули
    }
    </script>
    <div id="myform">
    <input type="text" name="blabla" value="" />
    <input type="button" name="blabutton" value="SUBMIT IT!" onclick="myformsubmit();" />
    </div>
  • Коля Дубр

    Сообщения: 45 Репутация: N Группа: Адекваты

    Spritz 16 января 2011 г. 20:32, спустя 23 минуты 38 секунд

    Абырвалг, tabindex - годная мысль как дополнение (чтоб при переключении табом фокус вставал на нужную кнопку), но основной проблемы не решает (при отправке по ентеру все равно в POST попадает название первой кнопки, а не той, у который наименьший tabindex).

    fgets, плохой вариант. Не работает отправка по ентер, много кода, много яваскрипта, проблема со сборкой POST-данных и т.д.
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 16 января 2011 г. 20:39, спустя 6 минут 30 секунд

    Коля Дубр, hidden submit идеальный костыль имхо))))
    Сапожник без сапог
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 16 января 2011 г. 20:44, спустя 4 минуты 47 секунд

    >много яваскрипта
    $("div[id^='myform']").each(function() {
    $(this).find('input').each(function() {
    ну ты понял

    >Не работает отправка по ентер
    http://api.jquery.com/keypress/

    >проблема со сборкой POST-данных
    http://api.jquery.com/jQuery.post/

    всё проще паренной репы, и с жквери даже onclick писать не нужно, его в туда же можно завернуть
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 16 января 2011 г. 20:52, спустя 8 минут 39 секунд

    или вещать на события onkeypress элементов формы обработчики

    Спустя 65 сек.
    $("div[id^='myform']").each(function() {
     $(this).find('input').each(function() {


    $('#myform :input').each(function(el) {
     $(el).keypress(handler);
    });
  • Коля Дубр

    Сообщения: 45 Репутация: N Группа: Адекваты

    Spritz 16 января 2011 г. 21:37, спустя 44 минуты 35 секунд

    Ребят, я правда знаю, как это сделать на JS или стилями :)
    Я надеялся, что можно решить проблему без JS и без извратной верстки.
    Буду юзать "идеальный костыль".
    Всем спасибо за помощь.
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 16 января 2011 г. 21:38, спустя 42 секунды

    черт))
    Высокоуровневое абстрактное говно
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 17 января 2011 г. 7:01, спустя 9 часов 23 минуты 51 секунду


    или вещать на события onkeypress элементов формы обработчики

    Спустя 65 сек.
    $("div[id^='myform']").each(function() {
     $(this).find('input').each(function() {


    $('#myform :input').each(function(el) {
     $(el).keypress(handler);
    });



    паша всё хуйня давай по новой

    $('#myform :input').each(function(el) {
    alert($(el).val());
    }


    не выводит ничего

Пожалуйста, авторизуйтесь, чтобы написать комментарий!