我可以将Drupal表单中的第二个或之后的按钮设置为默认按钮吗?



我有一个使用表单API构建的自定义Drupal 6模块中的表单,它在列表中有一个或多个image_button元素,后面是保存和取消按钮。

当点击图像和标准按钮时,一切都很好,它们调用了它们应该调用的提交函数,但是如果我在表单的任何文本字段中按下[ENTER]键,表单中的第一个按钮就会被提交,不幸的是,在这种情况下,它是列表中的image_button而不是Save button。

这是web表单的一个标准问题,你通常必须在表单定义的早期插入一个隐藏的(通过样式和/或大小)按钮,以确保调用默认的提交路径(在这种情况下,保存按钮将调用),而不是在按钮之前的按钮的提交路径,你想成为默认的。

是否有一些Drupal 6的魔力,允许设置默认按钮,而不管它在表单定义中的位置,我没有在文档中找到,或者我应该创建一个不可见的幻影提交按钮?

谢谢大家的回答。

试着把'#weight'放到你的按钮上。

答案似乎是否定的,Drupal没有内置的方法来解决在按[ENTER]时表单中的第一个按钮是默认的问题。

这是我必须做的。

我在表单的顶部创建了一个额外的提交按钮:

// A submit button that needs to be hidden, it'll be the default rather than one from the list.
$form['hidden-submit'] = array(
  '#type' => 'submit',
  '#value' => 'Save',
  '#attributes' => array('class' => 'hidden-default-submit'),
);

在页面包含的CSS中,我添加了下面的皮带和大括号CSS来隐藏额外的提交按钮,因为我可以在尽可能多的浏览器中测试:

.hidden-default-submit {
  position: absolute;
  left: -2000;
  top: -2000;
  width: 0;
  height: 0;
  border: 0;
  margin: 0;
  padding: 0;
}

您可以通过为每个提交按钮分配不同的名称来轻松地做到这一点

最新更新