Drupal 7将值从javascript传递到webform隐藏字段

时间:2014-02-26 11:59:40

标签: drupal-7 drupal-theming drupal-webform

我有一个带有一些普通字段的网页表单(第一个和最后一个名字等),还有一些隐藏字段。

f1 - Hidden

f2 - Hidden

f3 - Hidden

它已设置为Secure value (allows use of all tokens),因此我可以使用令牌。

问题是,如何将值从javascript传递到webform隐藏字段,以便它们与表单一起提交。

我查看了令牌,例如:%post[f1]%post[f2]& %post[f3]但仍然不知道如何添加值(使用javascript / jQuery)。

非常感谢任何帮助。

C

2 个答案:

答案 0 :(得分:1)

你可以使用一些基本的jQuery。

$('input[name=INPUT_NAME]').val('NEW_VALUE');

为了完全符合Drupal主题,您可能希望将其包含在Drupal行为中:

(function ($) {
Drupal.behaviors.CUSTOMNAME = {
  attach: function(context) {

     $('input[name=INPUT_NAME]').val('NEW_VALUE');

  }
}
})(jQuery);

...当然,使用隐藏输入字段的name属性更改 INPUT_NAME ,使用描述性camelcase名称更改 CUSTOMNAME (例如ChangeHiddenValuesForm)。

最后请注意:请务必在表单的页面上包含此javascript文件。

修改 抱歉,我忽略了Secure value参考。

无论如何,如果你想要价值是安全的,那么你不应该通过Javascript来改变它,因为任何人都可以通过DOM将它改变为他或她喜欢的任何东西......这就是为什么Webform实现了Secure value功能: 值与表单一起提交,但不会被发送到最终用户的浏览器,从而禁用可能的滥用行为。 (对于记录:Secure value使用Drupal的Form API中的' value '类型)

如果您确实想要更改这样的隐藏值,您应该选择已经提及通过Javascript更改其能力的Hidden element (less secure, changeable via JavaScript),然后使用上述的Drupal行为。只有你这样做才会打印成隐藏的输入。

答案 1 :(得分:0)

如果您只是想添加一些javascript,那么使用drupal_add_js总线作为安全值,它将无法修改。在ur主题文件中尝试preprocess_page

             function mytheme_preprocess_page(&$vars, $hook) { 
            if (true) {
             drupal_add_js(drupal_get_path('theme', 'mytheme') . '/mytheme.js');
            $vars['scripts'] = drupal_get_js(); 
               }

它只是一个理论......