我正在尝试在Drupal 7站点内对PHP表单进行故障排除。目前,只有在用户点击按钮时才能提交表单。我想通过“Enter”键启用提交。我怎么能这样做?
以下是相关代码:
$form['search']['search_button'] = array(
'#type' => 'button',
'#value' => 'Search',
'#ajax' => array(
'callback' => 'ajax_search_callback',
// 'wrapper' => 'search-results',
'wrapper' => 'search',
'method' => 'replace',
'effect' => 'fade',
'event' => 'click',
),
);
我怀疑我需要更改“事件”字段或添加其他字段。
答案 0 :(得分:2)
我通过在textfield上添加这段代码来实现这一点,我想触发提交事件:
$form['field_name']['#attributes']['onkeypress'][] if (event.keyCode == 13) {jQuery('.submit-selector').mousedown();}
答案 1 :(得分:1)
这对我有用:
$form[FORM_ITEM]['#attributes']['onkeypress'][]="jQuery('input').keydown(function(e) {if (e.keyCode == 13) {e.preventDefault(); jQuery('#edit-submit').mousedown();}});";
答案 2 :(得分:0)
您需要将keypress属性添加到ajax数组并将其设置为TRUE。 它以api文档here的形式解释。
编辑: 第一种解决方案仅适用于单个输入字段。要在表单上添加keypress事件,您必须在表单中添加“onkeypress”属性,方法是将其添加到attributes数组中:
$form['#attributes']['onkeypress'] = 'if(event.keyCode==13){this.form.submit();}';
其中13是Enter的keyCode(或Mac的返回)。
我不知道这是否是最干净的解决方案,但它应该有效。
答案 3 :(得分:0)
我不是JS的专家,但这就是我自己解决这个问题的方法。
我没有对它进行测试,但我建议在js文件中添加类似以下语句的内容
$( document ).ready(function() {
$( "#target" ).keypress(function() {
if ( event.which == 13 ) {
$('my_form').submit();
}
});
});
基本上,您要查找按键事件13,然后提交表单。
我希望您的表单没有任何textarea标记,因为您可能会遇到一些用户问题。
编辑:在哪里添加Javascript?
我假设您正在编写自定义模块来生成表单,因此您可以添加模块的.info文件的路径或使用函数drupal_add_js("your_path_to_js_file");,这可能是更好的解决方案。
我希望它有所帮助。
干杯