我正在尝试使用不是“提交”类型按钮的按钮,而是一个普通的“按钮”类型,使用drupal 7的表单api,但我似乎无法得到它。
我尝试了很多东西,例如将#type设置为'button',将#button_type设置为'button',但无论我做什么,drupal总是会创建一个“提交”类型的按钮。
答案 0 :(得分:12)
您可以使用:
"#executes_submit_callback" => FALSE
禁用“提交”步骤。
如果您只想禁用“验证”步骤,请使用:
"#limit_validation_errors" => array()
答案 1 :(得分:3)
在Drupal 7中,可以通过添加:
来完成'#属性' =>数组(' onclick' =>' return(false);'),
到你的按钮定义。例如:
$form['my_form'] = array(
'#type' => 'button',
'#attributes' => array('onclick' => 'return (false);'),
'#value' => t('My Button'),
'#prefix' => t('<div class="myButton">'),
'#suffix' => t('</div>')
);
这适用于我的申请。
参考:禁用和覆盖按钮下的https://www.drupal.org/node/283065
答案 2 :(得分:2)
您可能需要查看this issue了解某些背景信息,然后考虑this workaround。您也可以使用#markup手动插入它。
答案 3 :(得分:2)
表格中的以下内容非常简单
$form['your-form-element'] = array(
'#type' => 'button',
'#name' => 'any-name',
'#value' => t('Button Text'),
);
在您的表单模板中:
print str_replace('type="submit"', 'type="button"', drupal_render($form['your-form-element']));
答案 4 :(得分:1)
在模板的template.php文件中添加以下功能。
function templatename_button($variables) {
$element = $variables['element'];
$type = strtolower($element['#button_type']);
switch($type){
case 'submit':
case 'reset':
case 'button':
break;
default:
$type = 'submit';
break;
}
$element['#attributes']['type'] = $type;
element_set_attributes($element, array('id', 'name', 'value'));
$element['#attributes']['class'][] = 'form-' . $element['#button_type'];
if (!empty($element['#attributes']['disabled'])) {
$element['#attributes']['class'][] = 'form-button-disabled';
}
return '<input' . drupal_attributes($element['#attributes']) . ' />';
}
并以您的形式
$form['mybutton'] = array(
'#type' => 'button',
'#value' => t('mytext'),
'#button_type' => 'button',
);
答案 5 :(得分:0)
有时我们需要定义一个默认按钮来提交表单,但是drupal中的所有按钮元素(#type=button
,submit
),TYPE
属性始终为"submit"
,所以必须将此属性修改为"button"
,指定我们需要的默认按钮。
渲染表单元素并替换TYPE属性。
echo strtr(drupal_render($form['btn']), array('type="submit"' => 'type="button"'));
修改表单定义。
form['btn']['#attributes'] = array('onclick' => 'this.type="submit"');