繁体   English   中英

Drupal PHP表单输入时提交

[英]Drupal PHP Form Submit On Enter

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

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

我通过在要触发提交事件的文本字段上添加以下代码来实现此目的:

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

这为我工作:

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

您需要将keypress属性添加到ajax数组并将其设置为TRUE。 这是形式的API文档中解释说, 这里

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

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

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

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

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

希望对您有所帮助。

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM