【问题标题】:jquery multiselect checkbox valuesjquery 多选复选框值
【发布时间】:2012-08-18 21:51:07
【问题描述】:

我正在使用 Jquery 多选复选框插件,在将返回的 (CSV) 值转换为数组时遇到错误。虽然严格来说这不是一个 jQuery 问题,但它似乎会在标准 js 方法上引发错误。 这是我所拥有的:

$(function(){
    $("select").multiselect({
         click: function(e){
            if( $(this).multiselect("widget").find("input:checked").length > 4 ){
                return false;
            }
        },
        close:function(evt, ui) {                   // Get the selected values upon close
            var which = $(this).attr('id');         // Find out which selectbox was open
            var checkedVals = $('#'+which).val();   // Get CSV string of checked options
            var valArray = checkedVals.split(',');  // convert CSV string to array
                for(a in valArray) {
                    currentBox = ('#'+which+'Box');         // Find current selectbox wrapper
                    var eHeight;                            
                    eHeight = $('p'+currentBox).height();   // Current wrapper height
                    $('p'+currentBox).height(eHeight+18);   // Add 18px to current wrapper for each Value
                    $('p'+currentBox).append('<div style="line-height:18px; margin-left:90px;"><a href="#"><img class="deleteVal" src="images/closewin.png" align="texttop" border="0"></a> '+valArray[a]+'</div>');
                }
        }
    }).multiselectfilter();

我得到一个逗号分隔的字符串,我想使用 js 将它放入一个数组中。 错误 - “checkedVals.split 不是函数” - 在这一行抛出: var valArray = checkedVals.split(',');

【问题讨论】:

  • 什么是checkedVal?是否存在 ID 为which 的元素?由于 ID 是唯一的,$("#" + which) 实际上应该只是 $(this)。你能张贴一些标记吗?
  • checkedVals 是一个多重选择方法,它返回 csv 字符串......我把它找回来了。是的……每个选择框都有一个唯一的 ID……实际上,任何数量的选择框都可以正常工作。我唯一的问题是拆分方法。也许它必须移到多选“关闭”功能之外??

标签: javascript jquery


【解决方案1】:

你必须做两件事

  1. 确保您已在 html 中设置 multiple 属性

    &lt;select id="select" multiple="multiple"&gt;

  2. 无需转换为数组。 val 将给出所选选项值的数组 ( NOT CSV )。

    var valArray = $('#' + which).val();

演示:http://jsfiddle.net/diode/32h2g/3/

【讨论】:

  • 其实没有...它不返回一个数组。根据规范(以及我返回的内容),它返回一个逗号分隔的列表:
  • 你检查过我的 js fiddle 吗?查看登录控制台
  • 是的..确实检查了你的小提琴。显示的是一个逗号分隔的列表。我会检查您发送的其他链接...谢谢。
  • 哦.. 现在我明白了.. 您在警报中看到的内容类似于 CSV。但实际上 alert 将数组转换为字符串。所以在你的代码中 checkedVals 实际上是数组。可以直接使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
  • 2018-09-17
  • 1970-01-01
相关资源
最近更新 更多