如何在具有多个提交表单元素的表单上设置默认提交按钮?

时间:2012-05-14 22:41:51

标签: drupal drupal-7 drupal-modules drupal-fapi drupal-forms

这个问题与去年的问题完全相同,但这个问题是针对Drupal 6的,我想知道Drupal 7是否有变化。

Can I make the second or later button in a Drupal form the default button?

在我的表单中,我有大约四个提交按钮表单元素。四个中的三个具有指定的提交功能,另一个使用默认的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将被执行。我希望主按钮成为默认按钮,这样当用户按下回车键时,该主按钮不会被提交Button_1

在上面提到的帖子中,其中一个答案是使用重量。我尝试使用重量,但所做的只是改变按钮在屏幕上的排序方式。是的,这确实允许提交Main_Button,但之后我在原始位置需要该按钮。

2 个答案:

答案 0 :(得分:2)

仅使用HTML无法做到这一点。 (因此没有Form API可以做的事情)因为没有标准的,没有html属性来处理多重提交表单中的默认提交。你应该使用CSS,但如果你不想重新使用,你可以使用jQuery。祝你好运!

 //Not tested
  $("#target").keypress(function(event) {
    if ( event.which == 13 ) {
       event.preventDefault();
       $('correctSubmit').submit();
     }
  });

答案 1 :(得分:0)

How is the default submit button on an HTML form determined?标识的解决方案显示了一种纯HTML / CSS方式来解决这个问题。我在http://pahsah.com/2015/08/10/html-forms-specifying-a-default-submit-button-pure-htmlcss-approach/扩展了这个主题。