我有表行,其中包含 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或其中任何一行。
基本上,它意味着如果起始深度大于目前的最大深度,它应该失败。
但是当它们无效时,它正在验证数字。
我做错了什么?
干杯。
答案 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);
});