多维数组元素验证

时间:2013-06-05 19:47:46

标签: javascript jquery

我正在使用一组多维输入元素,如:

<input value="0" name="Base_fare[23][0]" onchange="javascript:basechanged(23,0)" type="text" id="Base_fare[23][0]" class="imputText2"/>
<input value="0" name="Base_fare[24][0]" onchange="javascript:basechanged(24,0)" type="text" id="Base_fare[24][0]" class="imputText2"/>
<input value="0" name="Base_fare[25][0]" onchange="javascript:basechanged(25,0)" type="text" id="Base_fare[25][0]" class="imputText2"/>
<input value="0" name="Base_fare[23][15]" onchange="javascript:basechanged(23,0)" type="text" id="Base_fare[23][15]" class="imputText2"/>
<input value="0" name="Base_fare[24][15]" onchange="javascript:basechanged(24,0)" type="text" id="Base_fare[24][15]" class="imputText2"/>
<input value="0" name="Base_fare[25][15]" onchange="javascript:basechanged(25,0)" type="text" id="Base_fare[25][15]" class="imputText2"/>
<input value="0" name="Base_fare[23][16]" onchange="javascript:basechanged(23,0)" type="text" id="Base_fare[23][16]" class="imputText2"/>
<input value="0" name="Base_fare[24][16]" onchange="javascript:basechanged(24,0)" type="text" id="Base_fare[24][16]" class="imputText2"/>
<input value="0" name="Base_fare[25][16]" onchange="javascript:basechanged(25,0)" type="text" id="Base_fare[25][16]" class="imputText2"/>

我已将值存储到数组中:

var Base_fare = new Array(3);
Base_fare[23] = new Array(4);
Base_fare[23][0]=parseFloat(document.getElementById('Base_fare[23][0]').value);
Base_fare[23][15]=parseFloat(document.getElementById('Base_fare[23][15]').value);
Base_fare[23][16]=parseFloat(document.getElementById('Base_fare[23][16]').value);
Base_fare[23][17]=parseFloat(document.getElementById('Base_fare[23][17]').value);
Base_fare[24] = new Array(4);
Base_fare[24][0]=parseFloat(document.getElementById('Base_fare[24][0]').value);
Base_fare[24][15]=parseFloat(document.getElementById('Base_fare[24][15]').value);
Base_fare[24][16]=parseFloat(document.getElementById('Base_fare[24][16]').value);
Base_fare[24][17]=parseFloat(document.getElementById('Base_fare[24][17]').value);

因为索引是用php for-each循环动态生成的 所以我必须使用$.each

$.each(Base_fare, function(key, value) {
    alert(key);
  });  

但它没有返回23 24它会像那样返回1,2,3 我需要验证这些发现

我想做的就是总结这样的事情

$.each(Base_fare, function(key, value) {
        $.each(Base_fare[key], function(key2, value2) {
    alert(key2 + ':' + value2);
     });
  });  

所以我可以得到每个元素的值来操纵它并验证字段但它不起作用..

任何人都可以给我任何解决方案或替代解决方案。

1 个答案:

答案 0 :(得分:0)

  

但它没有返回23 24它会像那样返回1,2,3

jQuery的each()将使用for循环遍历数组,直到数组的length,完全如下:

// actual jQuery's each() code
var i = 0, isArray = isArraylike( obj );
...
if ( isArray ) {
    for ( ; i < length; i++ ) { // <------------------------------------ HERE
        value = callback.call( obj[ i ], i, obj[ i ] );

        if ( value === false ) {
            break;
        }
    }
} else {
...

因此无法按照您的意愿开始在2324索引上进行迭代。 您的替代方案是在使用之前测试索引:

$.each(Base_fare, function(key, value) {
    if (value !== undefined) alert(value);
});