如何在单选按钮选择上提交呼叫处理程序? -- 7 领域 和 javascript 领域 和 hooks 领域 和 polls 领域 drupal 相关 的问题

How do I submit call handler on radio button selection?


4
vote

问题

中文

我使用的在drupal 7中的高级民意调查 s模块。我正在尝试改变行为因此,在选择单选按钮时,会提交投票(无需点击 VOTE )。

模块正在使用ajax回调:

  $form['submit'] = array( '#type' => 'submit', '#ajax' => array(   'callback' => 'advpoll_form_submit',   'wrapper' => 'advpoll-form-' . $values->nid,   'name' => 'submit1', ), '#id' => 'edit-submit-advpoll-' . $values->nid, '#value' => t('Vote'),   

);

如何使用单选按钮调用此回调?

我很高兴为一个快速而肮脏的javascript / jquery解决方案,是一个真正的因素。

我已经尝试了jQuery解决方案:

  $('input[type="radio"]').change(function() {   $('#advpoll-form-296').trigger('click'); });   

但是这不是按预期调用动作。

我无法调用submit(),因为我不想导致页面重新加载。

我已经设法通过将单击事件添加到.module文件中的ajax数组中,使我的原始代码击中。

advpoll.module:

  function advpoll_choice_form($form, &$form_state, $values) {  $form['submit'] = array( '#type' => 'submit', '#ajax' => array(   'callback' => 'advpoll_form_submit',   'wrapper' => 'advpoll-form-' . $values->nid,   'name' => 'submit1',   'event' => 'click', //Added click event ), '#id' => 'edit-submit-advpoll-' . $values->nid, '#value' => t('Vote'),   

);

我知道我不应该在模块中覆盖代码。我怎么会把它变成一个主题钩?

英文原文

I use the advanced polls module in Drupal 7. I am trying to alter the behaviour so that the vote is submitted as soon as the radio button is selected (without having to hit Vote).

The module is using an ajax callback:

$form['submit'] = array( '#type' => 'submit', '#ajax' => array(   'callback' => 'advpoll_form_submit',   'wrapper' => 'advpoll-form-' . $values->nid,   'name' => 'submit1', ), '#id' => 'edit-submit-advpoll-' . $values->nid, '#value' => t('Vote'), 

);

How can I invoke this callback with radio buttons?

I am happy for a quick and dirty javascript/jQuery solution as time is a real factor.

I have tried a jQuery solution:

$('input[type="radio"]').change(function() {   $('#advpoll-form-296').trigger('click'); }); 

However this is not invoking the action as expected.

I cannot call submit() as I don't want to cause a page reload.

I have managed to get my original code to fire by adding a click event to the ajax array in the .module file.

advpoll.module:

function advpoll_choice_form($form, &$form_state, $values) {  $form['submit'] = array( '#type' => 'submit', '#ajax' => array(   'callback' => 'advpoll_form_submit',   'wrapper' => 'advpoll-form-' . $values->nid,   'name' => 'submit1',   'event' => 'click', //Added click event ), '#id' => 'edit-submit-advpoll-' . $values->nid, '#value' => t('Vote'), 

);

I am aware I should not override code within the module. How would I go about getting this into a theme hook?

           
     
     

回答列表

2
 
vote

这应该是这样做:

  $(function() {   $('input[type="radio"]').on('change', function() {     $(this).parents('form').submit();   }); });   

您可能希望为 $('input[type="radio"]') 符合您使用的表单的范围,否则如果在许多不同页面访问的JavaScript文件中包含此,您将绝对遇到问题!

演示: http://plnkr.co/edit/8448biywnvtbt3cv6s6?p=info

 

This should do it:

$(function() {   $('input[type="radio"]').on('change', function() {     $(this).parents('form').submit();   }); }); 

You might want to qualify the selector for $('input[type="radio"]') to the scope of the form you're working with, else if you include this in a JavaScript file that's accessed on many different pages, you'll definitely run into problems!

Demo: http://plnkr.co/edit/8448bjiywnVtbT3CV6s6?p=info

 
 
 
 
1
 
vote

已经发布了一段时间,但我希望这个答案能够帮助,无论如何

我发现这样做的简单方法(我也使用了admpoll模块)是使用 hook_form_alter

添加相同的ajax处理程序。

所以,在我的自定义模块:

  function MYMODULE_form_alter(&$form, &$form_state, $form_id) {   // The submit form has ID advpoll_choice_form   if ($form_id == 'advpoll_choice_form') {     foreach ($form as $key => &$value) {       // It seems that the radio buttons are under an array labelled 'choice_X'        // where X is the number of options you have, so this just checks       // it's doing it to the correct one       if (substr($key, 0, 7) == 'choice_') {         // Apply the same AJAX handler the submit button has to the radio buttons         $value['#ajax'] = $form['submit']['#ajax'];       }     }   } }   

希望这有助于未来的某人

 

It's been a while since this was posted but I hope this answer can help anyway

The simple way I found to do it (I'm using the advpoll module as well) is to add the same AJAX handler to the options dropdown using hook_form_alter

So, in my custom module:

function MYMODULE_form_alter(&$form, &$form_state, $form_id) {   // The submit form has ID advpoll_choice_form   if ($form_id == 'advpoll_choice_form') {     foreach ($form as $key => &$value) {       // It seems that the radio buttons are under an array labelled 'choice_X'        // where X is the number of options you have, so this just checks       // it's doing it to the correct one       if (substr($key, 0, 7) == 'choice_') {         // Apply the same AJAX handler the submit button has to the radio buttons         $value['#ajax'] = $form['submit']['#ajax'];       }     }   } } 

Hope this helps someone in the future

 
 

相关问题

1  为什么在上传后垂直图像翻转水平?  ( Why do vertical images flip horizontal after upload ) 
我偶尔碰到这个问题,我不确定它是什么。例如,我有一个我从非耳机网站或直接从相机到达的图像。如果我通过我的MAC上的预览或从其垂直显示的网站上的浏览器查看图像。一旦上传到我的Drupal网站,它水平翻转。 要绕过这个,我只需在Mac上打开图像并只需重新保存。 我一直认为我的电脑以某种方式旋转图像只是为了显示(基于一些逻...

1  如何在网站的主页上包含Addzhis共享按钮?  ( How to include the addthis sharing buttons on the home page of a site ) 
我正在使用 addthis 模块将节点的共享功能公开给用户。 是否有一种方法可以在 主页上包含这些按钮 的drupal 7站点? 对于节点,它很容易将此添加为每个内容类型的字段,并且它为每个基于内容类型的节点显示。但我不确定如何为主页添加此页面。 ...

0  Drupal Search API自定义排序顺序  ( Drupal search api custom sort order ) 
我正在使用搜索api solr 并使用视图用于搜索结果。在我的内容类型中,将使用实体转换以及表示节点语言的字段存在多语言字段。我在网站上有三种语言。 我想按语言对结果进行排序。 ,如果网站语言设置为英语, 搜索结果应该首先列出所有英语语言节点,然后列出第二语言,然后是第三语言。建议我解决这个问题。 ...

0  如何以视图中编程方式添加链接到图像字段  ( How to programmatically add a link to an image field in a view ) 
我有一个映像字段和其他字段的视图,我需要链接渲染的图像,而不是配置选择的内容,而是在另一个计算的过滤的视图上。 我认为我应该使用 my_theme_preprocess_views_view_field_myviewname 来捕捉这个字段,使用它的名称作为选择器,然后将其包装在计算的链接中,但没有找到如何做到这一点...

2  $ pager_total_items在自定义搜索模块中提供错误的结果计数  ( Pager total items giving wrong results count in custom search module ) 
我不是太确定会发生什么,但在我的自定义搜索模块中, $GLOBALS['pager_total_items'] inall在第一页上是错误的。 例如,我搜索一个术语,它将显示:显示77个结果的1 - 10 ,寻呼机显示9页(当它应该仅显示8)。 然后,如果我点击寻呼机转到第2页(或任何其他页面),显示更改为:显...

3  为什么要从一组节点加载30秒加上的字段值?  ( Why is loading a field value from a group of nodes taking 30 seconds plus ) 
我有一个带有大约300,000个节点的D7网站。我传递这个函数是300-500个nids的数组。有时函数在一秒钟内运行。有时需要40秒或更长时间!我无法弄清楚导致慢速运行的原因。如何获得Query和Fast的查询? function _load_field_values_for_nids($field_name,...

0  每用户获得修订次数?  ( Get number of revisions per user ) 
我正在尝试展示用户编辑一个节点的次数,如下所示,因此我已经启用了对我的内容类型的修订。 user1(300) user2(288) user3(200) 问题是,当有人创建一个新节点时,它会在node_revision表中保存为修订,但我不想将其计算为编辑。 如何实现这一目标? 这是我正在使用的代码,到目前...

1  添加图像上传到主题配置  ( Add image upload to theme configuration ) 
我正在尝试将图像上传到我所做的主题中的主题设置。显示图像上传字段确实出现,但实际上没有上传,并且图像永远不会得到保存。 在主题 - settings.php中我有函数 function mytheme_form_system_theme_settings_alter(&$form, $form_state, $...

0  转换为指定的语言[已关闭]  ( Translate to specified language ) 
关闭。这个问题需要更多聚焦。它目前不接受答案。 想要改进这个问题?更新问题,因此它仅拍摄了一个问题,只有编辑此帖。 关闭 1年前。 ...

2  如何从节点中删除一些注释?  ( How to remove some comments from a node ) 
我在数据库中创建了一个新表,以将评论与他们提交的节点版本相关联。现在,当节点渲染时,我只想显示与特定节点VID关联的注释。我考虑在hook_node_view中查询db以删除不适用的注释,但理想情况下,只有与vid关联的注释首先将添加到节点。有没有更好的方法来实现这个?我可以在评论添加到它之前是否在节点上? ...

4  如何基于身体中的字符数显示视图块?  ( How to display a view block based on number of characters in body ) 
我目前有一个视图,它会创建"关于作者" 框,从用户的配置文件中提取信息,并根据节点(内容)的作者显示相应的作者框。我只想在节点中具有最小字符量的节点上显示它。 (它目前显示所有节点,块已启用。) 所需的结果是长块内容有一个"关于作者" 框,而短件的内容没有。 我所拥有的问题是,当我选择视图的过滤条件时,未列出节点的主...

1  某些阻止代码正确处理匿名用户  ( Certain block code processes correctly for anonymous user ) 
我在Drupal 7.41网站上安装了Bluemasters主题。在此主题中,我创建了几个新区域并将新块添加到这些区域,所有这些区域都在任何访问者可用的主页上。 我发现当我将其视为经过身份验证的用户时,主页与匿名用户一起看。作为匿名用户,我有4个独立的文本块,彼此顶部,但是当我登录此文本都是正确的地方。 我发现如果我...

0  克隆网站指向原始网站的数据库 - 这可能会出现问题吗?  ( Cloned site pointing to original sites database can this cause problems ) 
可以指向原始网站的数据库的克隆站点导致问题? 我正在使用坐在单独的服务器上的MySQL数据库运行Drupal 7站点。 我将站点的代码库存储库的克隆挂在一个单独的开发服务器上,然后将数据库的最近备份导入了一个新的数据库。该站点从不同的域中正常运行。 但是,我忘了更新 local.settings.php 文件...

0  仅为其他页面启用高速缓存的前页提升?  ( Boost only for front page with cache enabled for other pages ) 
我知道 boost 模块只在禁用耳机缓存时才工作。 但是有没有办法打开 boost 模块仅限前页,启用缓存对于其他页面。 ...

-1  找到所有节点中重复了多少次关键字  ( Find how many times keyword is repeated in all nodes ) 
我有商业列表的节点,具有业务的标题,正文和其他联系人字段。 我想对所有内容"10000节点" 进行研究,并在每个节点的标题和身体字段中找到最重复的单词,因此我可以使用找到的关键字标记内容。 任何想法? ...

1  如何检查实体已创建?  ( How to check entity is already created ) 
我有创建名为"胜利" 的代码以实体类型为单位,我的问题是如何防止用户再次以相同的名称创建实体。 function commerce_services_store_create($data, $flatten_fields) { $storeName = $data['store_name']; $stat...

0  WebServices创建(注册)新用户  ( Webservices to create register a new user ) 
我计划编写连接到Drupal 7的客户端应用程序。我喜欢通过应用程序创建新用户,遇到一些文献,但我不确定该方法是否安全,也是它是否认为所有可能的使用 - 案例。 我遇到的第一个链接是这样的: https://www.drupal.org/node/1514312 我能够配置端点并成功发布+创建用户。但是,上述方...

4  如何为特定的Drupal页面添加jQuery较低版本?  ( How to add jquery lower version for a particular drupal page ) 
我已安装jQuery更新模块并将jQuery 1.10设置为默认jQuery版本,但我以前的功能停止工作之一。 我只想为特定页面使用jQuery 1.8。我如何实现这一目标? ...

1  如何获取实体参考字段的产品图像字段URL  ( How to get url of product image field of entity reference field ) 
尝试使用产品页面上的相关产品创建视图(块)。产品有一个字段"相关产品" (实体参考)以及在我的视图中(显示产品"字段)我可以使用上下文过滤器(内容:nid)和关系来获取它们的图像和标题(实体参考:相关产品)。但是,标题和图像URL存在问题,它们导致编辑页面(如管理员/商业/产品/ 1),但不限于内容。 我试图添加一个...

1  HTML标签未通过打印模块和HTML邮件[关闭]  ( Html tags not filtered with print module and html mail ) 
关闭。这个问题需要详细信息或清晰度。它目前不接受答案。 想要改进这个问题?添加详细信息并通过编辑此帖的问题。 关闭 4年前。 ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.