页面进入无限循环

时间:2014-01-28 09:24:04

标签: javascript php jquery

<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页面,我使用上面的代码验证我的表单。当我提交我的
表单页面无限循环,它不会停止或刷新或采取查询将数据插入数据库。 谢谢

2 个答案:

答案 0 :(得分:1)

您需要将数字与数字进行比较,而不是将数字与字符串进行比较,就像您在循环中所做的那样。解决方案非常简单:

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

或者更好的是:

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

答案 1 :(得分:0)

当您将输入值读为

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

返回的值是javascript中的字符串

因此,您必须使用

将其显式转换为数字
    var insno=parseInt(document.getElementById('ins').value,10);

还在for循环中定义“k”变量。 在嵌套函数tabval中,“k”的值再次重置为1,因此for循环(insval)从k = 1再次开始。

这应解决无限循环问题。

相关问题