0

好的,我有几个查询的表格。我开始为它编写验证代码,但我的错误不会显示。它发现错误是因为它将 div 的状态从隐藏更改为可见,但不会显示错误类型。

这是我的 valform.js

reason = "";
function validateForm(form) 
{
    reason += validateAge(form.age);
    if (reason != "") 
    {
        document.getElementById('erbox').style.visibility = 'visible';
        return false;
    }
    return true;
}

function validateAge(fld)
{
    function isNumber (o) 
    {
        return ! isNaN (o-0);
    }

    var error ="";
    var x=fld.value;
    if (x==null || x=="" )
    {
        error="Age must be filled";
    }
    else if (isNumber(x)==false) 
    {
        error="Your age is not numeric value!";
    }
    else if (x<18) 
    {
        error = "You need to be 18 or older!";
    }
    return error;
}

这是我的html表单:

<div id="upform">
<form name="lastcheck" action="lastcheck.php" method="post" onsubmit="return  
    validateForm(this);">
    Location: <input type="text" name="locationcity">
    Country:  <input type="text" name="country">
    Gender:  <input type="radio" name="group1" value="w"> Woman<br>
    <input type="radio" name="group1" value="m"> Man<br>
    Age: <input type="number" name="age" size="4" maxlength="2">
    <input type="submit" value="Submit">
    <div style="visibility:hidden" id="erbox">Next error(s) occured: 
    <script type="text/javascript"> document.write.lastcheck('reason');
    </script>
    </div>
    </form> 
</div>

我在标头中包含了 js 文件,如下所示:

<script src="js/valform.js"></script>

所以现在当它在 AGE 字段中发生错误时,我隐藏的错误表单变得可见,但没有关于错误的信息。

我还有一个问题,还在学习javascript:

所以想添加单选按钮验证,它打破了我的整个验证:

function vGender(fld) {

var x = fld.value;


var i = 0;
while (i < x.length) {
    if (x[i].checked) formValid = true;
    i++;        
}

if (!formValid) error = "blabla";
return error;
}​

我在顶部添加了另一个原因,如下所示:

reason += vGender(form.radios);
4

1 回答 1

1
document.write.lastcheck('reason'); 

这将在加载时填充您的 div - 您的验证功能仅显示它,但不会用新消息填充它,因此它是空的。

尝试这个:

if (reason != "") {
    var box = document.getElementById('erbox');
    box.style.visibility = 'visible';
    box.innerHTML = 'Next error(s) occurred: ' + reason; // here you go
    return false;
}
于 2013-01-12T00:25:10.877 回答