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

时间:2011-11-16 16:16:51

标签: drupal drupal-6 drupal-forms

我在使用Form API构建的自定义Drupal 6模块中有一个表单,它在列表中有一个或多个image_button元素,后跟Save和Cancel按钮。

单击图像和标准按钮时,一切正常,他们调用应该提交的提交功能,但是如果我在表单中的任何文本字段中按[ENTER]键,表单中的第一个按钮就会被提交,不幸的是,在这种情况下,列表中的image_button而不是“保存”按钮。

这是Web表单的标准问题,您通常必须在表单定义的早期入侵隐藏(按样式和/或大小)按钮以确保调用默认提交路径(在这种情况下,这就是Save按钮将调用)而不是您希望成为默认按钮之前的按钮的提交路径。

是否有一些Drupal 6魔法可以设置默认按钮,无论它在我在文档中找不到的表单定义中的位置,或者我应该创建一个样式提交按钮,该按钮的样式不可见?

提前感谢您的任何答案。

3 个答案:

答案 0 :(得分:0)

尝试将'#weight'放到按钮上。

答案 1 :(得分:0)

答案是否定的,没有内置的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,以便在我可以测试的多个Web浏览器中隐藏额外的提交按钮:

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

答案 2 :(得分:-1)

您可以通过为每个提交按钮分配不同的名称来轻松完成此操作