2011-11-16 37 views
0

我在用Form API构建的自定义Drupal 6模块中有一个表单,它在一个列表中有一个或多个image_button元素,接着是Save和Cancel按钮。我可以将Drupal表单中的第二个或更新的按钮设为默认按钮吗?

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

这是一个web表单的标准问题,你通常必须在表单定义的早期隐藏(按风格和/或大小)按钮来确保默认的提交路径被调用(在这种情况下,这就是保存按钮将会调用),而不是您希望作为默认按钮之前的按钮的提交路径。

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

在此先感谢您的任何答案。

回答

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来隐藏额外在尽可能多的网页浏览器提交按钮因为我可以测试:

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

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

+0

我试图以各种方式使用“#weight”,但它是所有在日生效,其中e形式的元素结束了,当按下[ENTER]时,第一个按钮将成为默认的问题。 – ianmjones

-1

,你可以很容易地通过为每个分配不同的名称为此提交按钮

相关问题