【问题标题】:Converting list box to checkboxes将列表框转换为复选框
【发布时间】:2016-04-11 17:11:14
【问题描述】:

我有一个下拉列表,当我从该下拉列表中选择一个项目时,会出现一个与该项目对应的列表,该列表来自列表框中的 json。但我不想有列表框,我想有复选框,以便我可以选择多个项目。我正在尝试将此列表框转换为复选框,但没有得到预期的结果..请帮助!!!

这是我的 JavaScript 代码

 $('#dropdown1').change(function () {
     $('#listbox').empty();

     $('<option>', {
         text: 'Select your List Option',
         value: '',
         selected: 'selected',
         disabled: 'disabled'
     }).appendTo('#listbox');

     var selection = $('#dropdown1 :selected').text();
     //   var selection = $('#dropdown1 :selected').text();
     $.each(jsObject, function (index, value) {
         if(value['name'] == selection) {
             var optionHtml = '';
             for(var i = 1; i <= 20; i++) {
                 var attr = 'attr' + ('000' + i).substr(-3);
                 optionHtml += '<option value="' + attr + '">' + value[attr] + '</option>';
             }
             $('#listbox').append(optionHtml);
             return false;
         }
     });
 });

这是我的html代码

<form name="myform" id="myForm">

    <select id="dropdown1"></select>
    <select id="listbox", multiple></select>
    <br>


</form>

更多js代码

$(document).ready(function() {

    $.ajax({
        url: "data.json",
        dataType: "json",
        success: function(obj) {
            var jsObject = obj;
            var usedNames = [];

            $('<option>', {
                text: 'Select your Option',
                value: '',
                selected: 'selected',
                disabled: 'disabled'
            }).appendTo('#dropdown1');

            $.each(obj, function(key, value) {
                if (usedNames.indexOf(value.name) == -1) {
                    $("#dropdown1").append("<option value=" + key + ">" + value.name + "</option>");
                    usedNames.push(value.name);
                }

【问题讨论】:

  • 在哪里以及如何声明 jsObject ?可以发个例子吗?
  • 我添加了更多代码,请看一下!!
  • obj 值的一个例子?
  • U 表示下拉列表中的值?它就像 abc, xyz,qwe
  • 填写下拉菜单后,当您选择一个选项时,您将在复选框列表中包含哪些数据,对吧?

标签: javascript jquery html checkbox


【解决方案1】:

用您需要的内容填充下拉列表后,当您选择一个选项时,您将获得的数据而不是创建&lt;select&gt; 而是创建&lt;div&gt;。然后用以下内容填充 div:

<input type="checkbox" name="yourDataName" value="yourDataName">yourDataName</input>

在 jsfiddle 上查看这个演示:https://jsfiddle.net/jagrati16/s566ss58/

这只是一个演示。希望能解决你的问题

改变这个:

$.each(jsObject, function (index, value) {
         if(value['name'] == selection) {
             var optionHtml = '';
             for(var i = 1; i <= 20; i++) {
                 var attr = 'attr' + ('000' + i).substr(-3);
                 optionHtml += '<option value="' + attr + '">' + value[attr] + '</option>';
             }
             $('#listbox').append(optionHtml);
             return false;
         }
     });

到这里:

var check = '';
 $.each(jsObject, function (index, value) {
         if(value['name'] == selection) {

             for(var i = 1; i <= 20; i++) {
                 var attr = 'attr' + ('000' + i).substr(-3);
                 check += '<input type="checkbox" name="'+attr+'" value="' + attr + '">' + value[attr] + '<br>';
             }
             $('#listbox').append(check);
         }
     });

【讨论】:

  • 嗨,谢谢你的建议,但是当你对数据进行硬编码时..我想提供我的 json 的 url,所以我应该在这里提到什么 data = ["hi","there"];并检查 += ''+ListName+'
    ';
  • 我有一个疑问,在你的 ajax 调用中,url 是 $.ajax({ url: "data.json", dataType: "json"} 所以你不打算将你的选择值传递给data.json 以获取与该特定选择相对应的列表
  • 所以应该是这样的:
  • var check = ''; $.each(jsObject, function (index, value) { if(value['name'] == selection) { for(var i = 1; i ' + value[attr] + ''; } $('#listbox').append(check); } });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 2017-05-09
相关资源
最近更新 更多