用js写了一个比较方便的表单验证器

About 2 minjavaScriptjavaScript jquery form

一、实现方式

  • 导入jquery

  • 将以下代码复制到html页面中

<script>
$(function() {
    // 调用此方法获取表单是否合法
    function checkInputPostData() {
        var list = $(".validInputs")
        var j = 0
        for(var i = 0; i<list.length; i++) {
            j = j+inputDataValid(list[i])
        }
        if (j == 4) {
            return false
        }
        return true
    }
    // 自定义表单效验 gqs
    function inputDataValid(then) {
        var th, promt, value, reg
        th = $(then)
        promt = th.parent().find(".Validform_info")[0]
        value = th.val()
        if(value == null || value == "") {
            $(promt).html('<span style="color:red">'+th.attr('nullmsg')+'</span>')
            $(promt).removeClass('Validform_right').addClass('Validform_wrong')
            return false
        }
        reg = th.attr("datatype")
        if(!eval(reg).test(value)){
            $(promt).html('<span style="color:red">'+th.attr('errormsg')+'</span>')
            $(promt).removeClass('Validform_right').addClass('Validform_wrong')
            return false
        }
        $(promt).html('<span style="color:red"></span>')
        $(promt).removeClass('Validform_wrong').addClass('Validform_right')
        return true
    }
}
</script>

  • input框写入自定义属性
 <input id="name" 
    onblur="inputDataValid(this)" 
    name="name" 
    type="text" 
    class="span3 validInputs"  <!-- 必须要validInputs的class,或者和checkInputPostData函数中的validInputs一致 -->
    datatype="/^[a-zA-Z\u4E00-\u9FA5]{1,20}$/" <!-- 正则:用于效验表单 -->
    value="123" 
    nullmsg="此项不能为空" <!-- 表单为空时的提示 -->
    errormsg="请填写字母或汉字"/> <!-- 正则效验失败时的提示 -->
                        
  • 在input下创建
<div class="Validform_info"></div>

注:需要和下面的代码层级一致,如果不一致要注意层级查找( th.parent().find(".Validform_info") )的更换

二、全部代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>简单的表单验证器</title>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/core.js"></script>
    <style>
    .Validform_right{
        正确提示的css
    }
    .Validform_wrong{
        错误提示的css
    }
</style>
</head>
<body>
    <table class="gritter-with-table" cellspacing="1">
        <tbody id="tbody">
            <tr name="posts">
                <th>姓名:</th>
                <td>
                    <input 
                        id="name" 
                        onblur="inputDataValid(this)" 
                        name="name" 
                        type="text" 
                        class="span3 validInputs" 
                        datatype="/^[a-zA-Z\u4E00-\u9FA5]{1,20}$/"
                        value="123" 
                        nullmsg="此项不能为空" 
                        errormsg="请填写字母或汉字"/>
                    <div class="Validform_info"></div>
                </td>
            </tr>    
            <tr name="posts">						
                <th>电话:</th>
                <td>
                    <input 
                        onblur="inputDataValid(this)" 
                        nullmsg="此项不能为空" 
                        value="1234" 
                        datatype="/^[a-zA-Z\u4E00-\u9FA5]{1,40}$/" 
                        placeholder="例:*********"  
                        class="span3 validInputs" 
                        id="phone" 
                        type="text"
                        name="phone" >
                        <div class="Validform_info"></div>
                </td>
            </tr>	
        </tbody>
    </table>
<script>
$(function() {
    // 调用此方法获取表单是否合法
    function checkInputPostData() {
        var list = $(".validInputs")
        var j = 0
        for(var i = 0; i<list.length; i++) {
            j = j+inputDataValid(list[i])
        }
        if (j == 4) {
            return false
        }
        return true
    }
    // 自定义表单效验 gqs
    function inputDataValid(then) {
        var th, promt, value, reg
        th = $(then)
        promt = th.parent().find(".Validform_info")[0]
        value = th.val()
        if(value == null || value == "") {
            $(promt).html('<span style="color:red">'+th.attr('nullmsg')+'</span>')
            $(promt).removeClass('Validform_right').addClass('Validform_wrong')
            return false
        }
        reg = th.attr("datatype")
        if(!eval(reg).test(value)){
            $(promt).html('<span style="color:red">'+th.attr('errormsg')+'</span>')
            $(promt).removeClass('Validform_right').addClass('Validform_wrong')
            return false
        }
        $(promt).html('<span style="color:red"></span>')
        $(promt).removeClass('Validform_wrong').addClass('Validform_right')
        return true
    }
}
</script>
</body>
</html>
Last update:
Contributors: gaoqisen