[英]Javascript validation
请帮我。 验证无效
<script type="text/javascript" src="javascript.js">
function validation()
{
var fname=document.forms["form1"]["fname"].value;
var lname=document.forms["form1"]["lname"].value;
var idnumber=document.forms["form1"]["idnumber"].value;
var email=document.forms["form1"]["email"].value;
var atpos=email.indexOf("@");
var dotpos=email.lastIndexOf(".");
var address=document.forms["form1"]["address"].value;
var phonenumber=document.forms["form1"]["phonenumber"].value;
if (fname==null || fname=="")
{
alert("Name should be entered correctly");
return false;
}
if (lname==null || lname=="")
{
alert("Name should be entered correctly");
return false;
}
if (isNaN(idnumber))
{
alert("Please enter a valid id number");
return false;
}
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
{
alert("Please enter a valid e-mail address");
return false;
}
if(address==null || address=="")
{
alert("Please insert your address");
return false;
}
if (isNaN(phonenumber))
{
alert("Please enter a valid phone number");
return false;
}
}
</script>
<form name="form1" action="validation.php" method="post" onsubmit=" return validation(this);return false">
Firstname:<input type="text" name="fname"><br/>
Lastname:<input type="text" name="lname"><br/>
Nation ID Number:<input type="text" name="idnumber" minlength="8"maxlength="8"><br/>
Email address: <input type="text" name="email"><br/>
Address:<input type="text" name="address"><br/>
Pnone number:<input type="text" name="phonenumber"><br/>
<input type="reset" name="reset" value="reset">
<input type="submit" name="submit" value="submit">
</form>
该代码存在许多问题:
您确实不应该在调用src="javascript.js"
的同时使用相同的<script>
元素,并且同时声明一个函数。 使用单独的元素,如下所示:
<script type="text/javascript" src="javascript.js"></script> <script type="text/javascript"> function validation() { ... } </script>
在<form>
元素中,有一个多余的;return false
。 表单将从return validation(this)
获取值,之后的任何值都将被忽略。 另外,不需要“;” 使用嵌入式javascript时。
您正在将this
作为参数传递给validation()
函数,但是验证期望没有参数。 应该:
function validation(oForm)
如果您已经通过了this
认证,为什么不使用它呢? this
是对元素本身的引用,因此对于验证功能,它是对表单的引用。 因此,无需命名表格。
<form action="validation.php" method="post" onsubmit="return validation(this)">
函数中的引用将是:
function validation(oForm)
{
var fname=oForm["fname"].value;
var lname=oForm["lname"].value;
}
仅这些更改就可以解决您的问题。 我将进一步检查代码以查看是否还有其他内容。
编辑:
我已经测试了验证,并且可以正常工作。 唯一需要的修改是从<SCRIPT>
标记中删除scr=validation.js
。 正如我建议的那样,使用单独的标签。
但我强烈建议您考虑我提到的其他问题。
另外,有关验证本身的其他建议:
对于字母数字字段,无需检查null
,仅使用“”就足够了。 您可以简单地使用:
if (lname=="")
名字和姓氏错误消息是相同的。 这会使用户感到困惑。
避免将电话号码测试为数字。 请记住,“(407)234-5678”是一个完全有效的电话号码,尽管它将使您的测试失败。 除非有充分的理由将其视为数字(自动拨号?),否则请将其保留为普通的文本字段。
在“国家ID”字段中:HTML中没有minlength
。 仅最大maxlength
如果值为空,则isNaN(idnumber)
将返回true
。 并且如果length <8。 我认为这是必填字段,具有所需的长度,因此您应该使用:
if (isNaN(idnumber) || idnumber.length != 8) { alert("Please enter a valid id number"); return false; }
对于所有测试,请考虑调整值。 目前,“”(仅限空格)之类的输入将通过您的测试。 Javascript没有内置的修整功能,但是可以使用以下方法完成:
功能trim(texto){
return texto.replace(/^\\s*|\\s*$/g, "");
}
像这样使用:
var fname=trim(oForm["fname"].value);
return true;
在所有测试成功之后,在validation()
。 这是所有更改后的建议代码:
<script type="text/javascript" scr="validation.js"></script>
<script type="text/javascript">
function validation(oForm)
{
var fname = trim(oForm["fname"].value);
var lname = trim(oForm["lname"].value);
var idnumber = trim(oForm["idnumber"].value);
var email = trim(oForm["email"].value);
var atpos = email.indexOf("@");
var dotpos = email.lastIndexOf(".");
var address = trim(oForm["address"].value);
var phonenumber = trim(oForm["phonenumber"].value);
if (fname=="")
{
alert("First name should be entered");
return false;
}
if (lname=="")
{
alert("Last name should be entered");
return false;
}
if (isNaN(idnumber) || idnumber.length != 8)
{
alert("Please enter a valid id number");
return false;
}
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length)
{
alert("Please enter a valid e-mail address");
return false;
}
if(address=="")
{
alert("Please insert your address");
return false;
}
if (isNaN(phonenumber))
{
alert("Please enter a valid phone number");
return false;
}
return true;
}
function trim( texto ) {
return texto.replace(/^\s*|\s*$/g, "");
}
</script>
<form name="form1" action="validation.php" method="post" onsubmit="return validation(this)">
Firstname:<input type="text" name="fname"><br/>
Lastname:<input type="text" name="lname"><br/>
Nation ID Number:<input type="text" name="idnumber" maxlength="8"><br/>
Email address: <input type="text" name="email"><br/>
Address:<input type="text" name="address"><br/>
Pnone number:<input type="text" name="phonenumber"><br/>
<input type="reset" name="reset" value="reset">
<input type="submit" name="submit" value="submit">
</form>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.