我正在进行JavaScript验证,但是当我输入姓氏时它无法正常工作,它不会显示错误并提交表单

时间:2015-09-28 08:02:18

标签: javascript php html html5 validation

JavaScript代码:

<script>
        function check_validation()
        {
            var Fname = document.frm.Fname.value;
            var Lname = document.frm.Lname.value;
            var error = 0;
            document.getElementById("error").innerHTML = '';
            if (Fname == "")
            {
                var error = 1;
                document.getElementById("error").innerHTML += 'First name is required';
            }
            else
            {
               var error = 0;
            }
            if(Lname == "")
            {
                var error = 1;
                document.getElementById("error").innerHTML += 'Last name is required';
            }
            else
            {
                var error = 0;
            }
            if(error == 1)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
    </script>


<body>
    <div id="error">
    </div>
    <form name="frm">
        First name : <input type="text" name="Fname" />
        Last name : <input type="text" name="Lname" />

        <input type="submit" name="submit" onclick="return check_validation();" />
    </form>
</body>

当两个值都为空时验证工作正常,但是当我直接在表单中输入第二个值时提交表单。我找不到错误。

2 个答案:

答案 0 :(得分:2)

问题是如果最后一个值有效,则重置错误标志,因此所有其他验证状态都将丢失。

假设Fname为空,然后错误设置为1,但如果填充Lname,则将error的值设置回{{1}因此,最后一次验证状态检查将仅考虑0的验证状态,忽略所有先前的状态。

解决方案是在开头设置标志初始值,然后仅在值无效时更新标志,如下所示。此外,如果您对该标志使用Lname值,则无需在底部使用另一个true/false块。

if...else

答案 1 :(得分:0)

如果第二个错误正确,则将错误设置为0,忽略第一个错误的值。顺便说一句,你应该使用布尔值,而不是使用0/1,这正是他们的目的。也不要多次设置错误(当var已经初始化时,不要使用var。)

function check_validation()
        {
            var Fname = document.frm.Fname.value;
            var Lname = document.frm.Lname.value;
            var error = true;
            document.getElementById("error").innerHTML = '';
            if (Fname == "")
            {
                error = true;
                document.getElementById("error").innerHTML += 'First name is required';
            }
            if(Lname == "")
            {
                error = true;
                document.getElementById("error").innerHTML += 'Last name is required';
            }
            return error;
        }