0

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

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

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

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

提前感谢您的任何答案。

4

3 回答 3

0

试着把'#weight'你的按钮。

于 2011-11-18T18:02:50.437 回答
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;
}
于 2011-11-22T15:23:59.870 回答
-1

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

于 2013-06-12T06:32:46.627 回答