【问题标题】:Drupal PHP Form Submit On EnterDrupal PHP 表单在输入时提交
【发布时间】:2016-07-05 18:58:33
【问题描述】:

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

我怀疑我需要更改“事件”字段或添加另一个字段。

【问题讨论】:

标签: php forms drupal drupal-7


【解决方案1】:

我通过在我想要触发提交事件的文本字段上添加这段代码来实现这一点:

$form['field_name']['#attributes']['onkeypress'][] if (event.keyCode == 13) {jQuery('.submit-selector').mousedown();}

【讨论】:

    【解决方案2】:

    您需要将 keypress 属性添加到 ajax 数组并将其设置为 TRUE。 它在表单 api 文档中进行了解释,here

    编辑: 第一个解决方案仅适用于单个输入字段。要在表单上添加按键事件,您必须通过将其添加到 attributes 数组中来将“onkeypress”属性添加到表单:

    $form['#attributes']['onkeypress'] = 'if(event.keyCode==13){this.form.submit();}';
    

    其中 13 是 Enter 的 keyCode(或者对于 mac 来说是 return)。

    我不知道这是否是最干净的解决方案,但它应该可以工作。

    【讨论】:

    • 当焦点位于按钮或表单的任何其他项目上时,这是否适用?
    • 根据文档,仅当按钮具有焦点时。
    • 你说得对,皮埃尔,它需要按钮有焦点。这个解决方案似乎并不合适。我用另一个解决方案进行了编辑。
    【解决方案3】:

    这对我有用:

    $form[FORM_ITEM]['#attributes']['onkeypress'][]="jQuery('input').keydown(function(e) {if (e.keyCode == 13) {e.preventDefault(); jQuery('#edit-submit').mousedown();}});";
    

    【讨论】:

      【解决方案4】:

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

      希望对你有帮助。

      干杯

      【讨论】:

      • 我会将这个添加到哪个 JS 文件中?这是一个 Drupal 站点。
      猜你喜欢
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 2011-04-04
      • 2015-11-11
      相关资源
      最近更新 更多