我正在进行JavaScript验证,但它';当我输入姓氏时,它不能正常工作,它不会显示错误并提交表单
JavaScript代码:我正在进行JavaScript验证,但它';当我输入姓氏时,它不能正常工作,它不会显示错误并提交表单,javascript,php,html,validation,Javascript,Php,Html,Validation,JavaScript代码: <script> function check_validation() { var Fname = document.frm.Fname.value; var Lname = document.frm.Lname.value; var error = 0; document.getElementById("error").inn
<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>
函数检查\u验证()
{
var Fname=document.frm.Fname.value;
var Lname=document.frm.Lname.value;
var误差=0;
document.getElementById(“错误”).innerHTML='';
如果(Fname==“”)
{
var误差=1;
document.getElementById(“错误”).innerHTML+=“需要名字”;
}
其他的
{
var误差=0;
}
如果(Lname==“”)
{
var误差=1;
document.getElementById(“错误”).innerHTML+=“需要姓氏”;
}
其他的
{
var误差=0;
}
如果(错误==1)
{
返回false;
}
其他的
{
返回true;
}
}
名字:
姓氏:
当两个值都为空时,验证工作正常,但当我直接在表单中输入第二个值时,表单被提交。我找不到错误。问题是,如果最后一个值有效,您正在重置错误标志,因此所有其他验证状态都将丢失 < > >代码> Fname <代码>为空白,然后将错误设置为<代码> 1 >代码>,但如果“代码> Lname < /代码>被填满,则将<代码>错误< /代码>的值设置为<代码> 0代码>,因此最后的验证状态检查只考虑代码的验证状态> Lname < /C> >所有先前的状态被忽略。 解决方案是在开始时设置标志初始值,然后仅在值无效时更新标志,如下所示。此外,如果您对标志使用
true/false
值,则无需在底部使用另一个if…else
块
function check_validation() {
var Fname = document.frm.Fname.value;
var Lname = document.frm.Lname.value;
var valid = true;
document.getElementById("error").innerHTML = '';
if (Fname == "") {
valid = false;
document.getElementById("error").innerHTML += 'First name is required';
}
if (Lname == "") {
valid = false;
document.getElementById("error").innerHTML += 'Last name is required';
}
return valid;
}
如果第二个错误是正确的,则将error设置为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;
}