使用循环中动态创建的 jquery 从表单中获取选择选项值

Posted

技术标签:

【中文标题】使用循环中动态创建的 jquery 从表单中获取选择选项值【英文标题】:Get select option value from forms using jquery created dynamically in loop 【发布时间】:2017-04-13 11:12:06 【问题描述】:

这是我在这里的第一个问题,如果我违反了任何规则,请原谅我。更具体地说,这是一个与 jquery 相关的问题,我对 jquery 的了解是有限的。

我试图从 FOR 循环中动态创建的表单中获取 SELECT 元素的值。问题是虽然我能够获取第一个表单的值,但它为下一组表单返回相同的值。

例如,使用 FOR 循环,我生成了 5 个动态表单,其中包含多个隐藏输入字段、一个选择字段(值是静态的,例如 1、2、3 等)和一个提交按钮。使用 jquery attr() 函数获取不同表单的隐藏输入字段的值没有问题。但是当我将此 attr() 函数应用于 SELECT 字段时,它仅适用于第一种形式。所有后续表单都返回与第一个表单相同的值。

var value= $('option:selected', '.select-class').attr('data-value');

请建议我如何获取循环内多个表单的 SELECT 字段的值。

谢谢

编辑:下面我粘贴了整个代码。它已从原始版本进行了修改,但问题仍然相同。您现在可以看到我正在使用锚标记(而不是按钮)和 while 循环(现在而不是 for 循环)发送数据。请看一下代码。

<?php while($fetch=$query->fetch())  ?>
      <select class="form-control sel_qty" name="product_qty" >                                            
             <option value="1" data-qty="1">1</option>
             <option value="2" data-qty="2">2</option>
             <option value="3" data-qty="3">3</option>
             <option value="4" data-qty="4">4</option>
             <option value="5" data-qty="5">5</option>                                            
       </select>
       <a href='#' class="btn btn-primary cart_submit" 
            data-code="<?php echo $fetch['product_code']; ?>" 
            data-title="<?php echo $fetch['title']; ?>" 
            data-price="<?php echo $fetch['price']; ?>" 
            data-url="<?php echo $fetch['url']; ?>" > 
        Submit 
        </a>
<?php  ?>

使用 jquery,我可以通过以下方式获取 while 循环中每个锚标记的数据属性值:

                   var product_code= $(this).attr("data-code");
                   var product_title= $(this).attr("data-title");
                   var product_price= $(this).attr("data-price");
                   var product_url= $(this).attr("data-url");

但是如何在 while 循环中获取每个选择元素的值。我只能获得第一个选择元素的价值,而不能获得后续选择元素的价值。

                 var value= $('option:selected', '.sel_qty').attr('data-qty');

上面的代码只获取循环中可用的第一个选择元素的值

【问题讨论】:

您需要再次循环以获取所有选项值。表单上的 For 循环。 能不能出示一下代码(完整) 【参考方案1】:

根据您提供的少量信息和代码,如果您发布的代码是循环内的代码,那么您的问题不是动态创建的表单,而是您使用的循环内的引用不是相对的。 在不知道自己在做什么的情况下,您可以执行以下操作:

$('form').each(function()
    var form = $(this);
    var value= form.find('option:selected', '.select-class').attr('data-value');
    ...
)

【讨论】:

以上是关于使用循环中动态创建的 jquery 从表单中获取选择选项值的主要内容,如果未能解决你的问题,请参考以下文章

jQuery serializeArray 没有获取动态创建的表单元素

如何在jquery移动自动完成中获取所选列表数据的ID

Yii 使用 Jquery 从单选按钮列表中获取选定的值

如何从使用 jquery 动态创建的视频标签中获取视频持续时间?

JQuery MiNiUI 多选多列下拉列表如何动态赋值。

如何使用ajax将从jquery for循环创建的输入值发送到php [重复]