d单击选择选项赢得';所选选项的st post值-jquery插件
我正在使用ddslick制作带有图标的下拉菜单,唯一的问题是当我发布表单时,所选选项的值总是空的,如果我关闭ddslick,它可以正常工作d单击选择选项赢得';所选选项的st post值-jquery插件,jquery,jquery-ui,jquery-plugins,Jquery,Jquery Ui,Jquery Plugins,我正在使用ddslick制作带有图标的下拉菜单,唯一的问题是当我发布表单时,所选选项的值总是空的,如果我关闭ddslick,它可以正常工作 <script language="javascript" type="text/javascript"> $('.cflagdd').ddslick({ onSelected: function(selectedData){ //callback function: do something with selectedData;
<script language="javascript" type="text/javascript">
$('.cflagdd').ddslick({
onSelected: function(selectedData){
//callback function: do something with selectedData;
// $('#editcflag').submit(); - this does not work, posts form on page load
}
});
</script>
<select class="cflagdd" name="cflag">
<option value="0" selected="selected">No action flag set</option>
<option value="1" data-imagesrc="'.base_url().'images/Actions-flag-green-icon.png">Resolved</option>
<option value="2" data-imagesrc="'.base_url().'images/Actions-flag-yellow-icon.png">Investigate</option>
<option value="3" data-imagesrc="'.base_url().'images/Actions-flag-red-icon.png">Urgent</option>
<option value="4" data-imagesrc="'.base_url().'images/Actions-flag-blue-icon.png">False positive</option>
</select>
$('.cflagd').ddslick({
onSelected:功能(selectedData){
//回调函数:对所选数据进行处理;
//$('#editcflag').submit();-这不起作用,在页面加载时发布表单
}
});
未设置操作标志
断然的
调查
紧急的
假阳性
版本:
Jquery-1.7.2.js
jqueryui-v1.8.20
感谢您的帮助,很有可能是一个比这个更好的解决方案,但是当我遇到这个问题时,我做的是将我选择的值放入一个隐藏的输入元素中
<script language="javascript" type="text/javascript">
$('.cflagdd').ddslick({
onSelected: function(selectedData){
if(data.selectedIndex > 0) {
$('#hidCflag').val(data.selectedData.value);
$('#editcflag').submit();
}
}
});
</script>
<input type="hidden" name="hidCflag" id="hidCflag" value="" />
<select class="cflagdd" name="cflag">
<option value="0" selected="selected">No action flag set</option>
<option value="1" data-imagesrc="'.base_url().'images/Actions-flag-green-icon.png">Resolved</option>
<option value="2" data-imagesrc="'.base_url().'images/Actions-flag-yellow-icon.png">Investigate</option>
<option value="3" data-imagesrc="'.base_url().'images/Actions-flag-red-icon.png">Urgent</option>
<option value="4" data-imagesrc="'.base_url().'images/Actions-flag-blue-icon.png">False positive</option>
</select>
$('.cflagd').ddslick({
onSelected:函数(selectedData){
如果(data.selectedIndex>0){
$('hidCflag').val(data.selectedData.value);
$('#editcflag')。提交();
}
}
});
未设置操作标志
断然的
调查
紧急的
假阳性
ddslick插件更改所有选择标记,并为它们创建一个新的隐藏
-字段。查看您的代码,您可能会发现一个未定义的输入:
<input name="undefined" id="undefined" class="dd-selected-value" type="hidden" value="1">
您可以将所选的ddslick数据放入类似input.hidden的字段中。然后,ddslick将输入元素呈现为HTML。当您执行简单表单提交时,html元素无法发送数据。;) Snipe656的概念构想可行,但脚本有一个错误。正确的脚本部分应为:
<script language="javascript" type="text/javascript">
$('.cflagdd').ddslick({
onSelected: function(data){
if(data.selectedIndex > 0) {
$('#hidCflag').val(data.selectedData.value);
$('#editcflag').submit();
}
}
});
</script>
$('.cflagd').ddslick({
onSelected:函数(数据){
如果(data.selectedIndex>0){
$('hidCflag').val(data.selectedData.value);
$('#editcflag')。提交();
}
}
});
(…)@johnj
我和你有同样的问题。所有这些提示/提示都没有帮助
ddslick的问题在于它的四轮马车。没有与所选项目一起发送的名称,但此
应该是
试试这个继任者:
您的错误在此版本中已修复。所选项目将被正确发送到服务器。您可以试试这个,它对我有用
$('.cflagdd').ddslick({
onSelected: function(selectedData){
$('.dd-selected-value').prop ('name', 'cflag');
}
});
ddslick中有一个bug,它使隐藏的输入没有name属性 我能够向ddslick添加几行代码,让它将select的name属性添加到它创建的隐藏元素中 首先,下载ddslick的未压缩版本: 然后在第106行或以“var ddSelect=…”开头的行之后添加以下内容:
以下是解决此问题的方法: 在未统一的源代码中找到这一行(第103行附近) 并在其下方添加以下内容:
// Inherit name attribute from original element
obj.find("input.dd-selected-value").attr("name", $(original).attr("name"))
这为我解决了这个问题解决方案
Solution
<select id="status" name="status" class="ddslick" >
<option value="1">Admin Only</option>
<option value="2">Editing</option>
<option value="3">Review</option>
<option value="4">Live</option>
</select>
<script>
$("select.ddslick").each(function(){
var name = $(this).attr('name');
var id = $(this).attr('id');
$("#"+id).ddslick({
showSelectedHTML: false,
onSelected: function(selectedData){
$("#"+id+ " .dd-selected-value").prop ('name', name);
}
});
});
</script>
仅限管理员
编辑
复习
居住
$(“select.ddslick”)。每个(函数(){
var name=$(this.attr('name');
var id=$(this.attr('id');
$(“#”+id).dds单击({
showSelectedHTML:false,
onSelected:功能(selectedData){
$(“#”+id+“.dd选定值”).prop('name',name);
}
});
});
通过在存储所选选项值的隐藏输入中动态添加一个名称,解决了此问题
在HTML中:
<select id='locationList'>
<option value="a">a</option>
...
</select>
$('#locationList').find('input[type=hidden]:first').attr("name", "location");
在jquery.ddslick.min.js中找到此文本 并为其添加一个名称
<input class="dd-selected-value" type="hidden" />
这将向服务器发送正确的数据
<input class="dd-selected-value" name="cflag" type="hidden" />
下载稳定版
我已经尝试了几乎所有给出的答案。有些不适用于多个实例,而另一些则断开了指向固定脚本的链接。我发现这是ddSlick的最新版本,它实际上修复了这个“bug”。请改进答案的格式,使其更具可读性。另请参见@Spontifixus,欢迎您自己编辑这些答案。不仅你会提高质量。你甚至会获得一些额外的声誉。@KonradViltersten JavaScript不是我的核心专业领域,所以我不确定什么是格式化为代码的,什么只是强调。此外,仅更改格式的编辑往往会因为太小而被拒绝。通常我自己编辑,但在这种情况下,我认为问题的作者(或在该主题上具有更多专业知识的人)可以做得比我更好。@spontifix我不同意“更改太小”的论点。变化的大小及其意义是两件不同的事情。不过,我明白你的意思。我编辑了一点这篇文章(也不是JS的超级高手)。我按照你说的做了,我的输入从来没有名字+id,只有class=“dd selected value”,我必须创建一个额外的hiddenfield,以便在表单提交时将所选值发送到Web服务器。你的原始标记有id吗?
Solution
<select id="status" name="status" class="ddslick" >
<option value="1">Admin Only</option>
<option value="2">Editing</option>
<option value="3">Review</option>
<option value="4">Live</option>
</select>
<script>
$("select.ddslick").each(function(){
var name = $(this).attr('name');
var id = $(this).attr('id');
$("#"+id).ddslick({
showSelectedHTML: false,
onSelected: function(selectedData){
$("#"+id+ " .dd-selected-value").prop ('name', name);
}
});
});
</script>
<select id='locationList'>
<option value="a">a</option>
...
</select>
$('#locationList').ddslick();
$('#locationList').find('input[type=hidden]:first').attr("name", "location");
<input class="dd-selected-value" type="hidden" />
<input class="dd-selected-value" name="cflag" type="hidden" />