Как да задам бутон за изпращане по подразбиране във формуляр с множество елементи на формуляр за изпращане?

Точно подобен въпрос беше зададен миналата година, но този въпрос беше за Drupal 6, чудя се дали е имало промяна за Drupal 7.

Мога ли да направите втория или по-късен бутон във формуляр на Drupal бутон по подразбиране?

Във формуляра си имам около четири елемента на формуляр за бутон за изпращане. Три от четирите имат определена функция за изпращане, а другият използва функцията hook_form_submit() по подразбиране, за да се справи със своето изпращане.

Ето как почти изглеждат три бутона:

$form['reset'] = array(
   '#type' => 'submit',
   '#value' => t('Reset Values'),
   '#submit' => array('_phonebook_reset_config'),
);

Ето как изглежда главният бутон:

$form['submit'] = array(
   '#type' => 'submit',
   '#value' => t('Update'),
);

Това е редът, в който се създават бутоните във формата: (Button_1, Button_2, Main_Button, Button_4).

Точно сега, ако натисна enter във формуляра, Button_1 се изпълнява. Искам главният бутон да бъде бутонът по подразбиране, така че когато потребителят натисне enter, този основен бутон да се изпраща, а не Button_1.

В публикацията, спомената по-горе, един от отговорите беше да се използва тежест. Опитах да използвам тегло, но всичко, което направи, беше да промени начина, по който бутонът беше подреден на екрана. Да, това позволи Main_Button да бъде изпратен, но след това имах нужда от този бутон в първоначалното му местоположение.


person samwell    schedule 14.05.2012    source източник


Отговори (2)


Това не може да стане само с HTML. (Така че няма нищо, което Form API да може да направи) Тъй като няма стандартни и html свойства, които да обработват изпращане по подразбиране във формуляр за многократно изпращане. Трябва да използвате CSS, но ако не искате да променяте стила, можете да използвате jQuery. Късмет!

 //Not tested
  $("#target").keypress(function(event) {
    if ( event.which == 13 ) {
       event.preventDefault();
       $('correctSubmit').submit();
     }
  });
person Miguel Lomelí    schedule 15.05.2012
comment
JavaScript щеше да е последната възможност. Но ако няма друг начин да го направите освен чрез това, тогава това ще трябва да стане. - person samwell; 15.05.2012
comment
@chudapati09 Може да изисква малко креативност със стила, но винаги можете да използвате CSS. Както и да е, не обвинявайте Form API, тъй като промяната на изпращането по подразбиране не може да се направи само с HTML. Винаги е първият. - person Miguel Lomelí; 15.05.2012
comment
@chudapati09 Проучих и изглежда, че това не е ограничение на Form Api. Просто не може да се направи само с HTML. Така че не се чувствайте зле, че не можете да го направите с PHP :) - person Miguel Lomelí; 15.05.2012
comment
Благодаря, че го разгледахте. Това наистина има смисъл. - person samwell; 16.05.2012

Решението, идентифицирано на Как е бутонът за изпращане по подразбиране в HTML формуляр е определен? показва чист HTML / CSS начин за справяне с това. Разширих темата на http://pahsah.com/2015/08/10/html-forms-specifying-a-default-submit-button-pure-htmlcss-approach/.

person Shan Plourde    schedule 10.08.2015