【问题标题】:populating second select based upon first select options根据第一个选择选项填充第二个选择
【发布时间】:2016-11-07 17:28:53
【问题描述】:

我有一个多选,我正在尝试的代码是从我将获得的查询数据中填充第二个选择,例如对函数进行 ajax 调用,并且该函数将从选择中附加或删除条目

我试过这样的

$(document).ready(function{
    $("#desk").change(function() {
        var deskid = $("#desk :option").attr('id');
        $.ajax ({
            url: mypagephp?dataid=deskid // [acomma seperated values of the all above chosen desks]
        });
    });
});

我的html代码是这样的

<tr>
    <td width="19%">Desk</td>
    <td width="81%">
        <select name="desk" id="desk" multiple="multiple" class="select">
            <cfoutput query="getAllDesk">
                <option value="100" id="100">Test 1</option>
                <option value="101" id="101">Test 2</option>
                <option value="102" id="102">Test 3</option>
                <option value="103" id="103">Test4</option>
            </cfoutput> 
        </select>
    </td>
</tr>

但我认为我正在失去某种方式,我需要执行每个调用并将 ajax 调用嵌套在每个调用中,这样我就可以将多个条目以逗号分隔的形式传递给 ajax cal,它可以填充第二个选择

【问题讨论】:

  • 所以您尝试使用下拉菜单进行多选?为什么不使用复选框?也许我没有完全理解你想要做什么。

标签: javascript jquery ajax


【解决方案1】:

我会使用听起来像您正在尝试做的复选框。以下代码将为您提供一个包含所有选定选项的数组,然后您使用逗号加入以获取您要通过 AJAX 发送的字符串。

$('#desk').on('submit',function(){
  //this will loop through checked boxes and put them in the
  //'checkedValues' variable as an array
  var checkedValues = $(this).find(':checkbox:checked').map(function(){
    return this.value;
  }).get();
  //then join the array and you'll have your comma separated string
  //with all selected values
  var desksString = checkedValues.join(',');
  console.log(desksString);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="desk">
  <input type="checkbox" value="100" name="desk1"/>Test 1<br>
  <input type="checkbox" value="101" name="desk2"/>Test 2<br>
  <input type="checkbox" value="102" name="desk3"/>Test 3<br>
  <input type="submit" value="Submit">
</form>

【讨论】:

  • 但我不是复选框,我是使用选择
  • 您能更清楚地了解您要做什么吗?所以你希望它是你在下拉列表中选择的每个选项,它被添加到要发送到服务器的字符串中?每次选择新选项时发送此字符串还是仅在单击提交按钮时发送?选择元素不适用于多项选择,因此我认为使用复选框会更理想。如果你能澄清,我可以修改我的答案。
  • 是的,如果我在顶部选择了 A,我的意思是第一次选择,然后我必须选择 A1 或 A2,因为 A 存在于第二次选择中作为 optgroup。所以是的,第二个正在动态生成您从第一个选择中选择的内容,如果您从第一个选择中取消选择,它将从第二个选择中删除,并且第二个选择再次从查询中重建。每次从第一个选择项目时,我正在重建第二个选择,我知道这听起来很糟糕,但这就是我所追求的,如果复选框是一个解决方案,我可以将代码恢复为复选框
  • 所以基本上,当第一个选择框选择返回您想要填充到第二个选择框中的数据时,您想对服务器进行 AJAX 调用吗?
猜你喜欢
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多