ddslick选择选项赢得所选选项的后期值 – jquery插件

我正在使用ddslick使用图标制作下拉菜单,唯一的麻烦是当我发布表单时所选选项的值始终为空,如果我关闭ddslick它可以正常工作。

 $('.cflagdd').ddslick({ onSelected: function(selectedData){ //callback function: do something with selectedData; // $('#editcflag').submit(); - this does not work, posts form on page load } });   No action flag set Resolved Investigate Urgent False positive  

版本:Jquery-1.7.2.js jQuery UI – v1.8.20

感谢您提供任何帮助,非常感谢

ddslick中存在一个错误,它会在没有name属性的情况下保留隐藏的输入。

我能够向ddslick添加几行,以便将select的name属性添加到它创建的隐藏元素中。

首先,下载ddslick的未压缩版本: http ://dl.dropboxusercontent.com/u/40036711/Scripts/jquery.ddslick.js

然后在第106行添加以下内容,或者在以“var ddSelect = …”开头的行后面添加:

 // set hidden input name ddSelect.find('input.dd-selected-value').attr('name', $(this).attr('name')); 

也许是比这个更好的解决方案,但是当我遇到这个时我做的是我取了我选择的值并将其放入隐藏的输入元素中。

    

Snipe656概念设计有效,但脚本有错误。 正确的脚本部分应该是:

  

(……)

 Solution   

通过动态地将名称添加到存储所选选项的值的隐藏输入来管理以修复它。

在HTML中:

  

在Javascript中:

  1. “ddslick”它:

     $('#locationList').ddslick(); 
  2. 动态地将名称属性添加到隐藏

     $('#locationList').find('input[type=hidden]:first').attr("name", "location"); 

ddslick插件会更改所有选择标记,并为它们创建一个新的隐藏 -field。 查看您的代码,您可能会发现未定义的输入:

  

在插件页面上无法清除的一点是插件需要一个周围的div和一个名称和id,以便select-tag正常工作。 所以使用:

 

现在您有了一个有效的输入:

  

请参阅jquery中的容器:

 $('.cflagdd_container').ddslick(); 

必须ddslickselectedData放在input.hidden之类的字段中。 然后, ddslick输入元素呈现为HTML。 当您执行简单的表单提交时,html元素无法发送数据。 ;)

@John J.

我和你一样有同样的问题。 所有这些提示/提示都无济于事。

ddslick有问题的问题。 没有与所选项目一起发送的名称,但这个

应该。

尝试这个继任者:

http://ddslickremablized.remabledesigns.com/

您的错误已在此版本中修复。 所选项目将正确发送到服务器。

你可以尝试这个,它对我有用。

 $('.cflagdd').ddslick({ onSelected: function(selectedData){ $('.dd-selected-value').prop ('name', 'cflag'); } }); 

这是对此的修复:

https://github.com/ahmeij/ddslick/commit/6a085996428dd6f1a06a6fd2195c8f4f13d8ab28

在未经审查的源代码中查找此行(第103行)

  obj.addClass('dd-container').append(ddSelectHtml).append(ddOptionsHtml); 

并添加以下信息:

 // Inherit name attribute from original element obj.find("input.dd-selected-value").attr("name", $(original).attr("name")) 

这解决了我的问题!

jquery.ddslick.min.js找到此文本并为其添加名称

  

这将向服务器发送正确的数据