【问题标题】:Run JavaScript on form submit in Drupal 7在 Drupal 7 中的表单提交上运行 JavaScript
【发布时间】:2013-05-14 21:48:15
【问题描述】:

我有一个表单,其中包含用户应填写的几个字段。该表单还有两个隐藏字段用于用户当前位置(纬度、经度)。我现在花了很长时间试图找到一种方法来填充这些字段。

我希望它的工作方式是这样的: 提交表单时(jQuery 或表单标签中的 OnSubmit),应运行询问设备位置的 JavaScript 函数。然后用结果填充隐藏的字段。

我有执行此操作的工作代码,但我无法让 Drupal 调用它。

有没有办法在 Drupal 中提交表单时运行 JavaScript 函数,或者我应该找到另一种方法。

非常感谢,

【问题讨论】:

    标签: javascript php drupal drupal-7 drupal-fapi


    【解决方案1】:

    尝试使用#attributesonclick 事件添加到提交按钮。

    $form['SUBMIT_BUTTON']['#attributes'] = array(
        'onclick' => array("YourJsCallback()"),
    );
    

    如果您已经在['#attributes'] 数组中添加了一些内容,那么您需要添加到其中。

    $form['SUBMIT_BUTTON']['#attributes']['onclick'] = array("YourJsCallback()");
    

    【讨论】:

    • 谢谢!问题是它只有在有人点击按钮时才会起作用,而在键盘上按回车键时不起作用。该网站是在移动设备上运行的,但我不能想当然地认为用户没有为他们的 iPad 使用外部键盘。
    【解决方案2】:

    现在似乎已经开始工作了。添加以下内容

    $form['#attributes'] = array('OnSubmit' => 'myFunction();');
    

    【讨论】:

      【解决方案3】:

      您在“www/misc/ajax.js”中有以下钩子,您可以在 javascript 代码中覆盖它:

      /**
       * Modify form values prior to form submission.
      */
      Drupal.ajax.prototype.beforeSubmit = function (form_values, element, options)
       {
            // This function is left empty to make it simple to override for modules
            // that wish to add functionality here.
       };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多