【问题标题】:Posting dynamically appended dropdown data发布动态附加的下拉数据
【发布时间】:2017-08-15 17:57:48
【问题描述】:

我的主页上有一个下拉菜单,在选择时会根据所选值附加额外的下拉菜单,如下所示:

https://jsfiddle.net/harunthuo/he55vwca/3/

我面临的挑战是:下拉列表将根据在“儿童”下拉列表中选择的值动态附加。所以我想知道我将如何捕获每个附加下拉列表的值并在我的帖子中捕获它。附加的下拉菜单都具有相同的名称和类属性,所以如果我要选择附加的下拉菜单:

$('#children-number').on('change', '.children-num', function(e){
    var child_num = e.target.value;
    console.log(child_num);
});

这将捕获在每个附加下拉列表中选择的值。我如何从这里开始,以便我捕获这些值并将它们全部发送到我的帖子,以便我捕获这些值:

$('#children-number').on('change', '.children-num', function(e){
        var child_num = e.target.value;
        console.log(child_num);

        var data = $('#myForm').serializeArray();
        data.push({name: 'ages', value: child_num});

        $.post("page.php", data);
});

这最后一部分是我有点卡住的地方。谢谢

【问题讨论】:

  • 只要您在#myForm 中附加新的select 元素,那么您根本不需要修改您的代码。选定的值将包含在serializeArray()的输出中
  • 嘿@RoryMcCrossan。当我这样做时,我只会得到一个值。假设我在“儿童”下拉列表中选择 2,将附加 2 个下拉列表。如果我为两个附加的下拉列表和帖子选择值 2 和 4,我的帖子将只有 4 个,即 ["ages"]=> string(1) "4"

标签: javascript jquery drop-down-menu


【解决方案1】:

好的,也许这可以帮助您继续前进:

试试这个(但也许在更改功能之外,也许是一个按钮点击):

 var dataArr = [];  
 $('.children-num').each(function() {
    value = $(this).val();
    dataArr.push(value);
 });

然后代替

data.push({name: 'ages', value: child_num});

data.push({name: 'ages', value: dataArr});

现在你应该得到

["ages"]=> array()

或类似的东西

here's a fiddle 在您单击“click-me”按钮后在控制台中记录子编号的值

编辑:我还建议不要在更改事件中执行$.post,而是在单击按钮或类似事件时执行,因为每次更改选择时它都会发布,我认为这不是一个好习惯

【讨论】:

  • 太棒了。实际上是在捕获数组中的值,但我的错误是我在 change 函数中执行此操作。感谢您的意见
猜你喜欢
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 2016-07-17
  • 2018-04-18
  • 2012-04-28
  • 2016-10-20
  • 2021-01-09
  • 1970-01-01
相关资源
最近更新 更多