Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery获取最低可用字段名_Javascript_Jquery - Fatal编程技术网

Javascript 使用jQuery获取最低可用字段名

Javascript 使用jQuery获取最低可用字段名,javascript,jquery,Javascript,Jquery,我有一个表格a,其中字段的名称类似于data[Field][0][value],data[Field][1][value][/code>,等等,其中整数递增,但其余保持不变。有没有办法用jQuery找出可用的最小整数值 我的表单使用JS动态添加和删除字段(其中一些字段是由PHP后端在页面加载时创建的),因此我需要最小的整数,以便创建没有冲突的字段 现在在页面加载时,我将字段计数设置为$(“输入[name$='[value]'))。长度;,然后在创建输入时增加它。这可以防止任何名称空间冲突,但它不

我有一个表格a,其中字段的名称类似于
data[Field][0][value],data[Field][1][value][/code>,等等,其中整数递增,但其余保持不变。有没有办法用jQuery找出可用的最小整数值

我的表单使用JS动态添加和删除字段(其中一些字段是由PHP后端在页面加载时创建的),因此我需要最小的整数,以便创建没有冲突的字段

现在在页面加载时,我将
字段计数设置为
$(“输入[name$='[value]'))。长度;
,然后在创建输入时增加它。这可以防止任何名称空间冲突,但它不考虑删除的输入:我希望能够重新使用删除的字段的名称。

如果可以处理
数据[Field][0]…data[Field][n]
,那么我会说
data[Field]
是一个
数组
data[Field]。length
返回该
数组
的当前长度。在这种情况下,最后一个值将位于
data[Field][data[Field]。length-1]
中,下一个可用的整数(索引)将是
数据[字段].长度

只是为了好玩并演示另一种选择:如果您放弃“命名方案”并使用数据属性跟踪输入字段,例如
,您可以使用一种方法动态确定可用的最低插槽:

function getFreeSlot(inputFields) {
  var freeslots = []
     ,idxs      = inputFields.map(
                     function (i, el) { return +$(el).attr('data-idx');}
                   ).toArray()
  idxs.every( function (v,i) {
                void( v-(i ? 1 : 0) !== this[(i>0 ? i-1 : 0)]
                      && freeslots.push(this[(i>0 ? i-1 : 0)]+1) );
                return v; }, idxs );
  return freeslots.length ? freeslots[0] : idxs.length+1;
}

如果您可以寻址
数据[Field][0]…数据[Field][n]
,那么我会说
数据[Field]
是一个
数组
数据[Field]。length
返回该
数组
的当前长度。在这种情况下,最后一个值将位于
数据[Field][data[Field].length-1]
下一个可用的整数(索引)将是
数据[Field].length

只是为了好玩并演示另一种选择:如果您放弃“命名方案”并使用数据属性跟踪输入字段,例如
,您可以使用一种方法动态确定可用的最低插槽:

function getFreeSlot(inputFields) {
  var freeslots = []
     ,idxs      = inputFields.map(
                     function (i, el) { return +$(el).attr('data-idx');}
                   ).toArray()
  idxs.every( function (v,i) {
                void( v-(i ? 1 : 0) !== this[(i>0 ? i-1 : 0)]
                      && freeslots.push(this[(i>0 ? i-1 : 0)]+1) );
                return v; }, idxs );
  return freeslots.length ? freeslots[0] : idxs.length+1;
}

如果您可以寻址
数据[Field][0]…数据[Field][n]
,那么我会说
数据[Field]
是一个
数组
数据[Field]。length
返回该
数组
的当前长度。在这种情况下,最后一个值将位于
数据[Field][data[Field].length-1]
下一个可用的整数(索引)将是
数据[Field].length

只是为了好玩并演示另一种选择:如果您放弃“命名方案”并使用数据属性跟踪输入字段,例如
,您可以使用一种方法动态确定可用的最低插槽:

function getFreeSlot(inputFields) {
  var freeslots = []
     ,idxs      = inputFields.map(
                     function (i, el) { return +$(el).attr('data-idx');}
                   ).toArray()
  idxs.every( function (v,i) {
                void( v-(i ? 1 : 0) !== this[(i>0 ? i-1 : 0)]
                      && freeslots.push(this[(i>0 ? i-1 : 0)]+1) );
                return v; }, idxs );
  return freeslots.length ? freeslots[0] : idxs.length+1;
}

如果您可以寻址
数据[Field][0]…数据[Field][n]
,那么我会说
数据[Field]
是一个
数组
数据[Field]。length
返回该
数组
的当前长度。在这种情况下,最后一个值将位于
数据[Field][data[Field].length-1]
下一个可用的整数(索引)将是
数据[Field].length

只是为了好玩并演示另一种选择:如果您放弃“命名方案”并使用数据属性跟踪输入字段,例如
,您可以使用一种方法动态确定可用的最低插槽:

function getFreeSlot(inputFields) {
  var freeslots = []
     ,idxs      = inputFields.map(
                     function (i, el) { return +$(el).attr('data-idx');}
                   ).toArray()
  idxs.every( function (v,i) {
                void( v-(i ? 1 : 0) !== this[(i>0 ? i-1 : 0)]
                      && freeslots.push(this[(i>0 ? i-1 : 0)]+1) );
                return v; }, idxs );
  return freeslots.length ? freeslots[0] : idxs.length+1;
}

假设您的描述是页面上动态创建/销毁字段的
名称属性(换句话说,
):

这应该得到DOM中名称与regex
Data[Field][.*][value]
匹配的最后一个元素。如果要确保中间的位是数字,则需要更多地参与:

var $lastField = $('[name^=Data\\[Field\\]\\[').filter(function(idx, element) {
    return /Data\[Field\]\[[0-9]+?\]\[value\]/.test($(this).attr('name'));
}).last();
var lastField = $lastField[0];

假设您的描述是页面上动态创建/销毁的字段的
name
属性(换句话说,
):

这应该得到DOM中名称与regex
Data[Field][.*][value]
匹配的最后一个元素。如果要确保中间的位是数字,则需要更多地参与:

var $lastField = $('[name^=Data\\[Field\\]\\[').filter(function(idx, element) {
    return /Data\[Field\]\[[0-9]+?\]\[value\]/.test($(this).attr('name'));
}).last();
var lastField = $lastField[0];

假设您的描述是页面上动态创建/销毁的字段的
name
属性(换句话说,
):

这应该得到DOM中名称与regex
Data[Field][.*][value]
匹配的最后一个元素。如果要确保中间的位是数字,则需要更多地参与:

var $lastField = $('[name^=Data\\[Field\\]\\[').filter(function(idx, element) {
    return /Data\[Field\]\[[0-9]+?\]\[value\]/.test($(this).attr('name'));
}).last();
var lastField = $lastField[0];

假设您的描述是页面上动态创建/销毁的字段的
name
属性(换句话说,
):

这应该得到DOM中名称与regex
Data[Field][.*][value]
匹配的最后一个元素。如果要确保中间的位是数字,则需要更多地参与:

var $lastField = $('[name^=Data\\[Field\\]\\[').filter(function(idx, element) {
    return /Data\[Field\]\[[0-9]+?\]\[value\]/.test($(this).attr('name'));
}).last();
var lastField = $lastField[0];

您是否可以保留一个已删除元素的列表,然后在需要创建新元素时仅弹出列表中的一个元素以供使用(如果列表为空,则只需像现在这样增加字段计数)。

您是否可以保留一个已删除元素的列表,然后在需要创建新元素时仅弹出列表中的一个元素以供使用(如果列表为空,只需像现在一样增加字段计数即可)。

是否可以保留一个已删除元素的列表,然后只弹出列表中的一个元素,以便在需要创建新元素时使用(如果列表为空,只需像现在一样增加字段计数).

您是否可以保留一个已删除元素的列表,然后仅弹出列表中的一个元素,以便在需要创建新元素时使用(如果列表为空,只需像现在一样增加字段计数).

您想实现什么功能?使用字段名作为逻辑是不好的做法。我有一个表单,其中的字段由