Javascript验证脚本
我正在努力理解哪里出了错。 经过多次尝试,我倾向于认为这是关于过度检查()的问题。。。 append、clearelement和writeto是附加的迷你函数,它们完全可以使用。 因此,这个脚本检查表单,如果一切正常,就会打开一个新页面。但是,如果字段为空或类型错误,则会显示相对错误消息(或错误消息列表)。 我做了很多修改,有时打开时没有填写完整的表单(如下面的代码),有时只显示一个字段的错误消息,然后,即使您填写了所有字段,也不会打开新页面。 谢谢你的帮助Javascript验证脚本,javascript,validation,Javascript,Validation,我正在努力理解哪里出了错。 经过多次尝试,我倾向于认为这是关于过度检查()的问题。。。 append、clearelement和writeto是附加的迷你函数,它们完全可以使用。 因此,这个脚本检查表单,如果一切正常,就会打开一个新页面。但是,如果字段为空或类型错误,则会显示相对错误消息(或错误消息列表)。 我做了很多修改,有时打开时没有填写完整的表单(如下面的代码),有时只显示一个字段的错误消息,然后,即使您填写了所有字段,也不会打开新页面。 谢谢你的帮助 <script>
<script>
function overallcheck ()
{
if(!checkname() || !checkemail() || !checkjob())
{
writeTo("problemArea","Error messages area");
if(!checkname())
writeTo("problemArea","Please insert a valid name");
if(!checkemail())
writeTo("problemArea","Please insert a valid email");
if(!checkjob())
writeTo("problemArea","Please insert your job");
return false;
}
return true;
}
function checkname()
{
clearElement("problemArea");
var fullname = document.forms['form'].fullname.value;
if (fullname.length == 0 || !isNaN(fullname))
return false;
}
function checkemail()
{
clearElement("problemArea");
var mail = document.forms['form'].Email.value;
if (mail == '' || mail.indexOf('@') == -1 || mail.indexOf('.') == -1)
return false;
}
function checkjob()
{
clearElement("problemArea");
var i;
for (i=0;i<4;i++)
{
if (document.forms['form'].job[i].checked) {return true;}
}
return false;
}
</script>
<body>
<form onsubmit="return overallcheck();" action="res.html" id=form target="_blank" method="GET">
<table>
<tr>
<td><b><p>blabla?</p></b> </td>
<td> <input type="text" name="fullname" size="20" placeholder="Enter a valid name"/> </td>
</tr>
<tr>
<td><b><p> E-mail: </p></b></td>
<td><input type="email" name="email" maxlength="15" size = "20" placeholder="Enter a valid email address"/> </td>
</tr>
<tr>
<p><td><b><p>bla?</td></p>
<td>1<input type="radio" name="job" value="gov" /><br/>
2<input type="radio" name="job" value="pri" /><br/><div id="problemArea"> </div>
3<input type="radio" name="job" value="unem" /><br/>
4<input type="radio" name="job" value="other" /><br/>
</td></tr>
</table>
<p>
<button type="submit" onclick="" >clickme</button>
</form>
</body>
</html>
函数整体检查()
{
如果(!checkname()| | |!checkemail()| |!checkjob())
{
写入(“问题区”、“错误消息区”);
如果(!checkname())
书面形式(“问题区域”,“请插入有效名称”);
如果(!checkemail())
书面形式(“问题区域”,“请插入有效电子邮件”);
如果(!checkjob())
写到(“问题区域”,“请插入您的工作”);
返回false;
}
返回true;
}
函数checkname()
{
clearElement(“问题区域”);
var fullname=document.forms['form'].fullname.value;
if(fullname.length==0 | |!isNaN(fullname))
返回false;
}
函数checkemail()
{
clearElement(“问题区域”);
var mail=document.forms['form'].Email.value;
如果(mail=''| | mail.indexOf('@')==-1 | | mail.indexOf('.')=-1)
返回false;
}
函数checkjob()
{
clearElement(“问题区域”);
var i;
对于(i=0;i用它自己的div跟踪每种错误类型。将所有错误包装在一个try-catch中检查并警告错误。这有助于找到“Email”错误
函数写入(id,msg){
document.getElementById(id).innerHTML+=“”+msg+””;
}
函数clearElement(id){
document.getElementById(id).innerHTML=“”;
}
函数全局检查(){
试一试{
如果(!checkname()| | |!checkemail()| |!checkjob()){
如果(!checkname())
书面形式(“问题\全名”,“请插入有效名称”);
如果(!checkemail())
书面(“问题电子邮件”,“请插入有效电子邮件”);
如果(!checkjob())
书面形式(“问题”,“请插入您的工作”);
返回false;
}
返回true;
}捕捉(错误){
警惕(err);
}
}
函数checkname(){
clearElement(“问题_全名”);
var fullname=document.forms['form'].fullname.value;
if(fullname.length==0 | |!isNaN(fullname)){
返回false;
}
返回true;
}
函数checkemail(){
clearElement(“问题电子邮件”);
var mail=document.forms['form'].email.value;//email.value;
如果(mail=''| | mail.indexOf('@')==-1 | | mail.indexOf('.')=-1){
返回false;
}
返回true;
}
函数checkjob(){
clearElement(“问题”);
var i;
对于(i=0;i<4;i++){
if(document.forms['form'].job[i].选中){
返回true;
}
}
返回false;
}
td{
垂直对齐:文本顶部;
}
.问题{
颜色:红色;
}
布拉布拉?
电邮:
布拉
1
2
3
4
点击我
除了checkjob之外的所有函数都返回false或未定义,所以像!checkname()
这样的表达式可以任意解析为true。哦,还有!isNaN(全名)
似乎没有多大意义。另外checkname
!=checkname
我也会是“那个家伙”并指出您一般不应该依赖客户端表单验证。希望这只是一些预验证,以减少服务器请求,并且您正在服务器上进行真正的验证,对吗?对吗?您应该共享您的表单。