2014-02-26 101 views
1

我有一个正常字段(第一个&姓氏等)的webform,但也有一些隐藏字段。Drupal 7将值从javascript传递到webform隐藏字段

f1 - Hidden 

f2 - Hidden 

f3 - Hidden 

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

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

我看着令牌如:%post[f1]%post[f2] &​​但仍然不知道如何添加值(用JavaScript/jQuery的)。

任何帮助,这是非常赞赏。

C

回答

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); 

...当然变化 INPUT_NAME与隐藏的name属性输入字段和 CUSTOMNAME带有描述性名称(例如ChangeHiddenValuesForm)。

最后一点:确保在表单的页面上包含此JavaScript文件。

编辑: 对不起,我忽略了Secure value参考。

无论如何,如果你希望值是安全的,那么你不应该改变它的Javascript,因为任何人都可以通过DOM将其更改为他或她喜欢的任何东西......这就是为什么Webform实现Secure value功能:价值确实与表单一起提交,但不会发送到最终用户的浏览器,因此禁用可能的滥用。 (根据记录:Secure value使用“”类型从Drupal的形式API)

如果你想改变这样一个隐藏的价值,你应该选择Hidden element (less secure, changeable via JavaScript)其中已经提到它能够通过JavaScript来改变,然后使用上面描述的Drupal行为。只有你这样做,它才会被打印为隐藏的输入。

+0

感谢,但对'安全values'似乎不显示为正常隐藏输入。有任何想法吗? – Cybercampbell

+0

请参阅我的文章中的编辑。 – Propaganistas

+0

使用webform 4.x至少你的输入字段将被命名为括号,并且你需要类似这样的内容来用jQuery选择它们:$('input [name =“submitted [INPUT_NAME]”]')。VAL( 'NEW_VALUE'); - 我不确定这是旧版webform的情况。谢谢你的伟大答案。 –

0

如果您只是想添加一些JavaScript,然后使用drupal_add_js总线作为安全值,它将无法修改。尝试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(); 
       } 

它只是一个理论...

相关问题