需要有关JavaScript函数的帮助来确定升序数字

时间:2010-07-02 03:49:38

标签: javascript jquery

我有表行,其中包含 start 编号和 end 编号(输入字段)。

每行,结尾必须大于开头。

从左到右,从上到下的输入数字必须大于最后一个。

因此每行有2个输入,有4个(例如)行。每个数字都比最后一个大。

我一直在尝试使用此功能验证这一点

   var maxDepth = 0,
  didValidate = true;

// I assume this reads from left to right top to bottom as they are that way in the markup
$('.input-start-depth, .input-end-depth').each(function(i) {

  maxDepth = Math.max(maxDepth, parseFloat($(this).val(), 10));

  var isStart = ($(this).hasClass('input-start-depth'));
  var value = $(this).val();


  if (isStart && value > maxDepth) {
    didValidate = false;

    return false;
  };

  lastValue = value;

});

我一直在努力让这个工作起来。另一个重要的事情是行数是动态的,可能有1或10,000或其中任何一行。

基本上,它意味着如果起始深度大于目前的最大深度,它应该失败。

但是当它们无效时,它正在验证数字。

我做错了什么?

干杯。

2 个答案:

答案 0 :(得分:1)

我认为你不能假设读取元素的顺序。你应该考虑逐行阅读表格。这里有一些代码可以看看我的意思:

$('table#mytable tr').each(function() {
  var start = parseInt($(this).find('.input-start-length').val());
  var end   = parseInt($(this).find('.input-end-length').val());
  if(start > maxDepth) {
    didValidate = false;
    return false;
  }
  lastvalue = start;
});

答案 1 :(得分:0)

我最终使用了,这似乎有用

$('table tbody tr').each(function(i) {


                var startDepth = parseFloat($(this).find('.input-start-depth').val(), 10);
                var endDepth = parseFloat($(this).find('.input-end-depth').val(), 10);


                var anyNans = isNaN(startDepth) || isNaN(endDepth);

                if (anyNans || startDepth > endDepth || startDepth < maxDepth) {
                    didValidate = false;
                    return false;
                };
                maxDepth = Math.max(maxDepth, endDepth);

            });