1

我在 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;

?>

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

4

2 回答 2

0

这种情况可能很多,而且根据使用的浏览器,点击事件和提交事件会同时被调用,这是不安全的(例如,在IE中如果你的提交按钮调用另一个提交函数,表单将被提交两次...)

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

于 2012-12-01T13:01:57.123 回答
0

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

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

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

尝试像这样更改它:

            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这在访问它的值之前验证是否为空。

于 2012-12-01T13:12:07.210 回答