javascript函数不返回特定情况的值

时间:2012-12-01 12:45:41

标签: php javascript ajax

我在php中有一个示例脚本,验证是使用javascript完成的。我在点击按钮时使用ajax脚本生成输入框。当我点击提交时,它会检查是否所有方框都已填满。   我正在使用for循环验证这些框。当这些框为空时,它会正确发出警报,并且我在同一个案例中返回false。但问题是当所有的盒子都被填满时,它不会返回任何东西,即使我在这种情况下返回true,函数也会停止工作。 我的带有函数的javascript代码如下所示

function addInput(){
var xmlhttp;

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    var result = xmlhttp.responseText;


     var newElem = document.createElement ("div");
            newElem.innerHTML = result;
     newElem.id = "input";

       var container = document.getElementById ("main");
            container.appendChild (newElem);

    }

  }
xmlhttp.open("GET","insert.php",true);
xmlhttp.send();
}

var count = '<?php echo $_SESSION['z']; ?>'

function check(){
    function validate()
    {   
        for(var i=1; i<=count+10; i++)
        {
            if(document.getElementById("text"+i+"").value == "")
            {
                alert("Please Enter Start Date For Sales Promotion");
                document.getElementById("text"+i+"").focus();
                return 'false';
            }
        }
        return 'abc';
    }

    var flag = validate();
    if(flag != 'false')
    {
        alert("correct");
    }
}

我的HTML代码如下所示

<form method="post" action="save.php">
<div id="main">
    <div id="input1">
            Enter Name </br></br>
            <input type="text" id="text1" />
            <?php $_SESSION['z'] = 2; ?>
    </div>
</div>
</br>
<input type="button" value="add another" onclick="addInput()" />
<input type="button" value="Submit" onclick="check()" />
</form>
<div id="display"></div>

我的ajax代码如下所示

 <?php
session_start();
$q = $_SESSION['z'];

?>

            Enter Name </br></br>
            <input type="text" id="text<?php echo $q; ?>" />

<?php $q = $q + 1; 
$_SESSION['z'] = $q;

?>

问题是当所有字段都填满后它不会返回任何内容。

2 个答案:

答案 0 :(得分:0)

这可能会发生很多,并且根据所使用的浏览器,click事件和提交事件将同时被调用,这是不安全的(例如,如果你的提交按钮调用另一个提交功能,在IE中,表格将提交两次......)

您应该将检查功能连接到表单的onBeforeSubmit事件。

答案 1 :(得分:0)

当您尝试检索页面上不存在的项目时,可能会出现错误。

            if(document.getElementById("text"+i+"").value == "")
            {
                alert("Please Enter Start Date For Sales Promotion");
                document.getElementById("text"+i+"").focus();
                return 'false';
            }

这里可能没有带有“text8”,“text9”等ID的项目。在这种情况下,当您尝试获取非现有元素的值时,将出现空引用错误。

尝试更改它:

            var ele = document.getElementById("text"+i); 
            if(ele && ele.value == "")
            {
                alert("Please Enter Start Date For Sales Promotion");
                document.getElementById("text"+i+"").focus();
                return 'false';
            }

这可以在访问其值之前验证ele是否为空。