jQuery-遍历具有不同数组键的选择字段数组

时间:2018-08-03 13:45:58

标签: jquery arrays ajax loops

我正在动态生成一些选择输入,它遵循此结构

<select id="OrderType_orderItem_0_product" name="OrderType[orderItem][0][product]" class="form-control">,

<select id="OrderType_orderItem_1_product" name="OrderType[orderItem][1][product]" class="form-control">

以此类推。

我需要在生成的每个选择的.change上做一个ajax发布,我该怎么做?

现在我有了这个,但是它显然只适用于ID为0的第一次选择:

$(document).ready(function () {
        $('[name="OrderType[orderItem][0][product]"]').change(function(){
           var val = $(this).val();
           $.ajax({
                type: "POST",
                url: "myurl" + val,
                success: function(data) {

                }
            });
            return false;
        });

2 个答案:

答案 0 :(得分:3)

一种方法是为他们提供一个共享类

<select id="OrderType_orderItem_0_product" name="OrderType[orderItem][0][product]" class="form-control myClass">,

<select id="OrderType_orderItem_1_product" name="OrderType[orderItem][1][product]" class="form-control myClass">

然后将此事件分配给该类:

$(document).ready(function () {
        $('.myClass').change(function(){
           var val = $(this).val();
           $.ajax({
                type: "POST",
                url: "myurl" + val,
                success: function(data) {

                }
            });
            return false;
        });

因为我们将此元素用于val,它将使用触发事件的元素。

答案 1 :(得分:2)

您只需要在以change开头的所有选择输入的OrderType上触发功能

试试这个例子:

$(document).ready(function () {

  $("select[name^='OrderType']").change(function(){

           var val = $(this).val();

           $.ajax({
                type: "POST",
                url: "myurl" + val,
                success: function(data) {

                }
            });
            return false;
  });

});