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