2014-01-28 2 views
0
<script type="text/javascript"> 
function insval() 
{ 

    var insno=document.getElementById('ins').value; 
    var a=1; 
    for(k=1;k<=insno;k++) 
    { 
     if((document.getElementById('num_cat'+k).value=="")||(document.getElementById('num_cat'+k).value=="0")) 
     { 

      alert("Please Select Number of Insulins"); 
      a=2; 
      return false; 
     } 
     else 
     { 
      var num = $('#num_cat'+ k).val(); 

      var i; 
      for(i=1;i<=num;i++) 
      { 
       if(document.getElementById('insulin'+k+i).value=="") 
       { 
        alert("Please Insert Insulins"); 
        a=2; 
        return false; 
       } 
      } 

     } 

     if(a==2) 
     { 
      return false; 
     } 
     if((k+1)==insno) 
     { 
      tabval(); 
     } 
    } 

    function tabval() 
    { 
     var tabno=document.getElementById('tabletno').value; 

     for(k=1;k<=tabno;k++) 
     { 
      if((document.getElementById('tab_cat'+k).value=="")||(document.getElementById('tab_cat'+k).value=="0")) 
      { 
       alert("Please Select Number of Tablets"); 
       a=2; 
       return false; 
      } 
      else 
      { 
       var num = $('#tab_cat'+ k).val(); 
       var i; 
       for(i=1;i<=num;i++) 
       { 
        if(document.getElementById('tablet'+k + i).value==""||document.getElementById('tablet'+k + i).value=="0") 
        { 
         alert("Please Insert Tablets"); 
         a=2; 
         return false; 
        } 
       } 
      } 
     } 
    } 

} 
</script> 

Я создаю страницу PHP, и я использовал приведенный выше код для проверки моего form.When я представить мою
формы страница идет на бесконечный цикл, и он не остановится, или обновить или взять запрос для вставки данных в базу данных. спасибоPage переходит в бесконечный цикл

+0

Я хочу проверить, является ли значение insno = 2 и tabno = 0 – Riyaz

+0

У вас есть цикл for (k = 1; k <= insno; k ++) без объявления k как локальной переменной –

ответ

0

Когда вы читаете значение ввода как

var insno=document.getElementById('ins').value; 

возвращаемое значение является строкой в ​​JavaScript

так, вам придется явно преобразовать его в число, используя

var insno=parseInt(document.getElementById('ins').value,10); 

также охватывает переменную «k» в вашем цикле for. В вкладке вложенной функции значение «k» снова устанавливается на 1, поэтому цикл for (insval) снова начинается с k = 1.

Это должно решить проблему с бесконечным контуром.

+0

можно вызвать tabval() внутри insval(). – Riyaz

+0

вы можете вызвать tabval внутри insval, но я заметил, что вы не правильно областью действия "К" переменная insval имеет для (к = 1, к <= insno; K ++) {...} и tabval также имеет для (k = 1; k <= tabno; k ++) В результате каждый раз, когда вызывается tabval, значение k устанавливается равным 1, поэтому цикл продолжается бесконечно. вместо того, чтобы использовать различные имена переменных или сферу их, как показано ниже: для (вар к = 1; к <= insno; K ++) и для (вар к = 1, K <= tabno; K ++) – kcak11

1

Вам нужно сравнить числа с числами вместо числа со строкой, как и внутри цикла. Решение довольно легко:

for(var k=1;k<=parseInt(insno,10);k++) 

Или еще лучше было бы:

var insno= parseInt(document.getElementById('ins').value,10); 
+0

извините ..... ' insno '- это число, а не строка, а значение равно 2. – Riyaz

+0

«insno» - это номер, и я могу его распечатать. – Riyaz

+0

Но когда вы говорите: var insno = document.getElementById ('ins'). Value; , тогда insno будет иметь текст типа «2», а не номер 2. Вот почему вам нужно добавить parseInt (...), как описано выше – Franky

Смежные вопросы