Drupal PHP表单在输入时提交

时间:2016-07-05 18:58:34

标签: php forms drupal drupal-7

我正在尝试在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',
              ),
        );

我怀疑我需要更改“事件”字段或添加其他字段。

4 个答案:

答案 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");,这可能是更好的解决方案。

我希望它有所帮助。

干杯