前端表单处理

建立必须填写的字段

在填写表单时,编码人员希望指定用户必须填写某些字段,然后才能提交表单,可以使用jS代码来检查某些或者所有字段是否已经填写了。

页面的html代码
<!DOCTYPE html>
<html>
    <head>
        <title>Password Check</title>
        <link rel="stylesheet" href="根据其他字段对字段进行检查.css">
    </head>
    <body>
    <form  action="#" >
    <p> <label for="userName">Your name:<input type="text" size="30" id="userName" class="reqd"></label></p>
    <p> <label for="passWd1">Chooose a password:<input type="password"  id="passWd1" class="reqd"></label></p>
    <p> <label for="passWd2">Verify password:<input type="password"  id="passWd2" class="reqd passwd1"></label></p>
    <p><input type="submit" value="Submit">&nbsp;<input type="reset"></p>
    </form>
        <script src="根据其他字段对字段进行检查.js"></script>
    </body>
</html>
页面的CSS代码
body{
    color:#000;
    background-color:#fff;
}
input.invalid{
    background-color:#ff9;
    border:2px red inset;
}
label.invalid{
    color:#f00;
    font-weight:bold;
}

此次对label 标签和input 标签定义两个无效的类选择器,即表示标签输入出错时,就选用无效的选择器来处理,以提示用户必须输入。

页面的JS代码
window.onload = initForms;
/* 遍历查找页面的所有的form表单*/
function initForms(){
    for(var i=0;i<document.forms.length;i++)
    {
        document.forms[i].onsubmit=validForm; 
    }
}
/*查找系统中所有的input标签并对标签进行进一步处理*/
function validForm()
{
    var allGood=true;
    var allTags=document.getElementsByTagName("input");
    for(var i=0;i<allTags.length;i++)
    {
        if(!validTag(allTags[i],allGood))
        {
            allGood=false;
        }
    }
    return allGood;
}
/*处理相应标签中的类选择器*/
function validTag(thisTag,allGood)
{
    var outClass="";
    var allClasses=thisTag.className.split(" ");
    for(var j=0;j<allClasses.length;j++)
    {
        outClass+=validBasedOnClass(allClasses[j],thisTag,allGood)+" ";
    }
    thisTag.className=outClass;
    if(outClass.indexOf("invalid") >-1)
    {
        thisTag.focus();
        if(thisTag.nodeName == "INPUT")
        {
            thisTag.select();
        }
        return false;
    }
    return true;
}
function validBasedOnClass(thisClass,thisTag,allGood)
{
    var classBack="";
    switch(thisClass)
    {
        case "":
        case "invalid":
            break;
        case "reqd":
            if(allGood && thisTag.value =="")
            {
                classBack="invalid ";
            }
            classBack +=thisClass;
            break;
        default:
            classBack +=thisClass;
    }
    return classBack;
}

可以看到,这是动态给标签添加类选择器,然后在渲染界面的同时,重新使用选择器加载。

根据其他字段对字段进行检查

比如:要求用户输入密码时,为了确保用户输入密码正确,使得用户输入两次密码,并且确保两次输入完全相同。
还是使用上述html代码和css代码,加入几行js 代码即满足需求。

window.onload = initForms;
/* 遍历查找页面的所有的form表单*/
function initForms(){
    for(var i=0;i<document.forms.length;i++)
    {
        document.forms[i].onsubmit=validForm; 
    }
}
/*查找系统中所有的input标签并对标签进行进一步处理*/
function validForm()
{
    var allGood=true;
    var allTags=document.getElementsByTagName("input");
    for(var i=0;i<allTags.length;i++)
    {
        if(!validTag(allTags[i],allGood))
        {
            allGood=false;
        }
    }
    return allGood;
}
/*处理相应标签中的类选择器*/
function validTag(thisTag,allGood)
{
    var outClass="";
    var allClasses=thisTag.className.split(" ");
    for(var j=0;j<allClasses.length;j++)
    {
        outClass+=validBasedOnClass(allClasses[j],thisTag,allGood)+" ";
    }
    thisTag.className=outClass;
    if(outClass.indexOf("invalid") >-1)
    {
        thisTag.focus();
        if(thisTag.nodeName == "INPUT")
        {
            thisTag.select();
        }
        return false;
    }
    return true;
}
function validBasedOnClass(thisClass,thisTag,allGood)
{
    var classBack="";
    switch(thisClass)
    {
        case "":
        case "invalid":
            break;
        case "reqd":
            if(allGood && thisTag.value =="")
            {
                classBack="invalid ";
            }
            classBack +=thisClass;
            break;
        default:

        **if(allGood && !crossCheck(thisTag,thisClass))
        {
            classBack ="invalid ";
        }**
        classBack +=thisClass;
    }
    return classBack;
}
/* 判断该标签与指定标签中的值是否相同*/
**function crossCheck(inTag,otherFieldID)
{
    if(!document.getElementById(otherFieldID))
    {
        return false;
    }
    return (inTag.value ==document.getElementById(otherFieldID).value);
}**

一定很奇怪指定标签在哪里吧?

<p> <label for="passWd2">Verify password:<input type="password"  id="passWd2" **class="reqd passwd1"**></label></p>

上述class 属性就已经指定标签啦,很神奇吧~~~

标识有问题的字段

将输入字段的边框改成红色是很不错的,但是如果能够让有问题的字段再醒目一点就更好啦。
还是使用上述html代码和css代码,加入几行js 代码即满足需求。

window.onload = initForms;
/* 遍历查找页面的所有的form表单*/
function initForms(){
    for(var i=0;i<document.forms.length;i++)
    {
        document.forms[i].onsubmit=validForm; 
    }
}
/*查找系统中所有的input标签并对标签进行进一步处理*/
function validForm()
{
    var allGood=true;
    var allTags=document.getElementsByTagName("input");
    for(var i=0;i<allTags.length;i++)
    {
        if(!validTag(allTags[i],allGood))
        {
            allGood=false;
        }
    }
    return allGood;
}
/*处理相应标签中的类选择器*/
function validTag(thisTag,allGood)
{
    var outClass="";
    var allClasses=thisTag.className.split(" ");
    for(var j=0;j<allClasses.length;j++)
    {
        outClass+=validBasedOnClass(allClasses[j],thisTag,allGood)+" ";
    }
    thisTag.className=outClass;
    if(outClass.indexOf("invalid") >-1)
    {
        **invalidLabel(thisTag.parentNode);**
        thisTag.focus();
        if(thisTag.nodeName == "INPUT")
        {
            thisTag.select();
        }
        return false;
    }
    return true;
}
function validBasedOnClass(thisClass,thisTag,allGood)
{
    var classBack="";
    switch(thisClass)
    {
        case "":
        case "invalid":
            break;
        case "reqd":
            if(allGood && thisTag.value =="")
            {
                classBack="invalid ";
            }
            classBack +=thisClass;
            break;
        default:

        if(allGood && !crossCheck(thisTag,thisClass))
        {
            classBack ="invalid ";
        }
        classBack +=thisClass;
    }
    return classBack;
}
/* 判断该标签与指定标签中的值是否相同*/
function crossCheck(inTag,otherFieldID)
{
    if(!document.getElementById(otherFieldID))
    {
        return false;
    }
    return (inTag.value ==document.getElementById(otherFieldID).value);
}
/*对有问题的字段标签加上相应的类选择器*/
**function invalidLabel(parentTag)
{
    if(parentTag.nodeName == "LABEL")
    {
        parentTag.className+=" invalid";

    }
}**

总结完毕,欢迎指正!!!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值