сравнивая массив javascript с результатом - PullRequest
0 голосов
/ 21 марта 2011

У меня есть приведенный ниже код, который проверяет мои динамически создаваемые офшорные блоки, чтобы увидеть, присутствует ли целочисленное значение при отправке. Если бы я должен был проверить сумму массива в конце, чтобы увидеть, было ли все поля, сложенные вместе, больше 0, как бы я это сделал.

function validateoffhire(form) {
    var num1 = document.getElementById('num1');
    var test2Regex = /^[0-9 ]*$/;  
    var num2 = num1.value;

    var i=0;
    var offhire1 = [];
    for(var i = 0; i < num2; i++) {
        offhire1[i] = document.getElementById('offhire1' + i);
        var offhire2 = offhire1[i].value;
        //if(nameRegex.match(pro[i].value)){

        if(!offhire2.match(test2Regex)){
            //alert("You entered: " + pro[i].value)
            inlineMsg('offhire1' + i,'This needs to be an integer',10);
            return false;
        }
    }
    return true;
}

большое спасибо за любую помощь

стив

Ответы [ 3 ]

1 голос
/ 21 марта 2011

Измените свой код, добавив аккумулятор внутри цикла, затем проверьте аккумулятор вне цикла:

function validateoffhire(form) {
  var num1 = document.getElementById('num1');
  var test2Regex = /^[0-9 ]*$/;  
  var num2 = num1.value;
  var accumulator = 0;

  var i=0;
  var offhire1 = [];
  for(var i = 0; i < num2; i++) {
    offhire1[i] = document.getElementById('offhire1' + i);
    var offhire2 = offhire1[i].value;
    //if(nameRegex.match(pro[i].value)){

    if(!offhire2.match(test2Regex)){
      inlineMsg('offhire1' + i,'This needs to be an integer',10);
      return false;
    }
    else{
      accumulator += parseInt(offhire2);
    }
  }
  if(accumulator > 0){

    return true;
  }
}
0 голосов
/ 21 марта 2011

Вы сохраняете все значения в массиве. так что вы можете сложить все значения, используя цикл.

var totalValue = 0; 
var i=0;
while(offhire1[i])
{
totalValue += offhire1[i] ;
i++
}
if(totalValue)
{
// Non zero
}

Не могли бы вы быть более конкретным, если я не прав.

0 голосов
/ 21 марта 2011

Вам необходимо:

  • Преобразовать входные значения в число
  • Используйте функцию forEach массива, чтобы сложить значения вместе.

Как:

 function validateoffhire(form) {
var num1 = document.getElementById('num1');
var test2Regex = /^[0-9 ]*$/;  
var num2 = num1.value;

var i=0;
    var offhire1 = [];
for(var i = 0; i < num2; i++) {
offhire1[i] = parseFloat(document.getElementById('offhire1' + i));
var offhire2 = offhire1[i].value;
  //if(nameRegex.match(pro[i].value)){

  if(!offhire2.match(test2Regex)){
        //alert("You entered: " + pro[i].value)
inlineMsg('offhire1' + i,'This needs to be an integer',10);
return false;
}
}
var sum = 0;
offhire1.forEach(function(a) {sum+=a});
// here, sum is the sum of offhire1's values
return true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...