zoukankan      html  css  js  c++  java
  • JavaScript实现带正则表达式的表单校验(校验成功后跳转)

    运行结果:

    源代码:

      1 <!DOCTYPE html>
      2 <html lang="zh">
      3 <head>
      4     <meta charset="UTF-8">
      5     <title>用户注册</title>
      6    <!-- <link rel="stylesheet" type="text/css" href="style/index.css"/>-->
      7     <style type="text/css">
      8         body {
      9             margin-top: 20px;
     10         }
     11 
     12         .box {
     13             font-size: 13px;
     14             margin: 0 auto;
     15             width: 80%;
     16         }
     17 
     18         .box-head {
     19             width: 30%;
     20             text-align: center;
     21             padding: 15px 20px;
     22             font-size: 24px;
     23         }
     24 
     25         .box-body {
     26             padding: 10px 20px;
     27         }
     28 
     29         .box-body th {
     30             font-weight: normal;
     31             vertical-align: top;
     32             padding-top: 12px;
     33         }
     34 
     35         .box-body tr:last-child {
     36             text-align: center;
     37         }
     38 
     39         .box-body input, button {
     40             vertical-align: middle;
     41             font-family: Tahoma, simsun;
     42             font-size: 12px;
     43         }
     44 
     45         .box-body input[type=radio] {
     46             height: 38px;
     47         }
     48 
     49         .box-body input[type=text],
     50         .box-body input[type=password], .box-body select {
     51             border-color: #bbb;
     52             height: 38px;
     53             font-size: 14px;
     54             border-radius: 2px;
     55             outline: 0;
     56             border: #ccc 1px solid;
     57             padding: 0 10px;
     58             width: 350px;
     59             -webkit-transition: box-shadow .5s;
     60             margin-bottom: 15px;
     61         }
     62 
     63         .box-body input[type=text]:hover,
     64         .box-body input[type=text]:focus,
     65         .box-body input[type=password]:hover,
     66         .box-body input[type=password]:focus, .box-body select:hover, .box-body select:focus {
     67             border: 1px solid #56b4ef;
     68             box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 0 8px rgba(82, 168, 236, .6);
     69             -webkit-transition: box-shadow .5s;
     70         }
     71 
     72         .box-body input::-webkit-input-placeholder {
     73             color: #999;
     74             -webkit-transition: color .5s;
     75         }
     76 
     77         .box-body input:focus::-webkit-input-placeholder,
     78         input:hover::-webkit-input-placeholder {
     79             color: #c2c2c2;
     80             -webkit-transition: color .5s;
     81         }
     82 
     83         .box-body button[type=submit] {
     84             padding: 4px 15px;
     85             cursor: pointer;
     86             width: 220px;
     87             height: 40px;
     88             background: #4393C9;
     89             border: 1px solid #fff;
     90             color: #fff;
     91             font: 16px bolder;
     92         }
     93 
     94         .box-body button[type=button] {
     95             margin-left: 30px;
     96             cursor: pointer;
     97             width: 120px;
     98             height: 40px;
     99             background: #4393C9;
    100             border: 1px solid #fff;
    101             color: #fff;
    102             font: 16px bolder;
    103         }
    104 
    105         .box-body button[type=reset] {
    106             margin-left: 30px;
    107             cursor: pointer;
    108             width: 120px;
    109             height: 40px;
    110             background: #4393C9;
    111             border: 1px solid #fff;
    112             color: #fff;
    113             font: 16px bolder;
    114         }
    115 
    116         .box-body .error {
    117             border: 1px solid #FF3300;
    118             background: #FFF2E5;
    119             font-size: 10px;
    120             height: 30px;
    121             line-height: 30px;
    122             margin-bottom: 10px;
    123             padding: 0 10px;
    124         }
    125 
    126         .box-body .success {
    127             border: 1px solid #01BE00;
    128             background: #E6FEE4;
    129             font-size: 10px;
    130             height: 30px;
    131             line-height: 30px;
    132             margin-bottom: 10px;
    133             padding: 0 10px;
    134         }
    135 
    136     </style>
    137 </head>
    138 <body>
    139 
    140 <div class="box">
    141     <div class="box-head">填写注册信息</div>
    142     <div class="box-body">
    143         <form id="registerForm" action="" method="post" onsubmit="return checkForm()">
    144             <table>
    145                 <tr>
    146                     <th>今天日期:</th>
    147                     <td><p id="currentDate"></p></td>
    148                     <td>
    149                         <div></div>
    150                     </td>
    151                 </tr>
    152                 <tr>
    153                     <th>用户名称:</th>
    154                     <td><input type="text" id="userName" name="userName" placeholder="长度2-10位以内的中英文字符和数字"></td>
    155                     <td>
    156                         <div></div>
    157                     </td>
    158                 </tr>
    159                 <tr>
    160                     <th>密  码:</th>
    161                     <td><input type="password" id="passWord" name="passWord" placeholder="长度2-8位任意字符"></td>
    162                     <td>
    163                         <div></div>
    164                     </td>
    165                 </tr>
    166                 <tr>
    167                     <th>确认密码:</th>
    168                     <td><input type="password" id="confirmPwd" name="confirmPwd" placeholder="请再次输入密码进行确认"></td>
    169                     <td>
    170                         <div></div>
    171                     </td>
    172                 </tr>
    173                 <tr>
    174                     <th>出生日期:</th>
    175                     <td><input type="text" id="birthday" name="birthday" placeholder="请输入出生日期"></td>
    176                     <td>
    177                         <div></div>
    178                     </td>
    179                 </tr>
    180                 <tr>
    181                     <th>学  历:</th>
    182                     <td>
    183                         <input type="radio" id="junior" name="education" value="0"/><label for="junior">专科</label>&nbsp;&nbsp;
    184                         <input type="radio" id="regular" name="education" value="1"/><label for="regular">本科</label>
    185                         <input type="radio" id="graduated" name="education" value="2"/><label
    186                             for="graduated">硕士研究生</label>
    187                     </td>
    188                     <td>
    189                         <div></div>
    190                     </td>
    191                 </tr>
    192                 <tr>
    193                     <th><label for="area">地  区:</label></th>
    194                     <td>
    195                         <select id="area" name="area">
    196                             <option value="">--------------------------请选择---------------------------</option>
    197                             <option value="0">东北</option>
    198                             <option value="1">华南</option>
    199                             <option value="2">华北</option>
    200                             <option value="3">华中</option>
    201                             <option value="4">西藏</option>
    202                         </select>
    203                     </td>
    204                     <td>
    205                         <div></div>
    206                     </td>
    207                 </tr>
    208                 <tr>
    209                     <th><label for="tips">备  注:</label></th>
    210                     <td><textarea name="tips" id="tips" style=" 100%;height: 100%;"></textarea></td>
    211                     <td>
    212                         <div></div>
    213                     </td>
    214                 </tr>
    215             </table>
    216             <div style="margin-top: 20px;margin-left: 70px;">
    217                 <button type="submit" id="submitFormBtn">提交并进行checkbox测试</button>
    218                 <button type="button" id="selectTest">select测试</button>
    219                 <button type="reset">重置</button>
    220             </div>
    221         </form>
    222     </div>
    223 </div>
    224 <script type="text/javascript">
    225     //获取当前客户端系统时间
    226     function getCurrentDate() {
    227         var nowDate = new Date();
    228         var year = nowDate.getFullYear();
    229         var month = nowDate.getMonth() + 1;
    230         var day = nowDate.getDate();
    231 
    232         if (month >= 1 && month <= 9) {
    233             month = "0" + month;
    234         }
    235         if (day >= 0 && day <= 9) {
    236             day = "0" + day;
    237         }
    238         document.getElementById("currentDate").innerHTML = +year + "" + month + "" + day + "";
    239     }
    240 
    241     window.setInterval(getCurrentDate, 1000);
    242 
    243     // 获取所有input框
    244     var inputs = document.getElementsByTagName('input');
    245     /*inputs=inputs+document.getElementsByName("select");
    246     inputs=inputs+document.getElementsByName("textarea");*/
    247     // 为每个input框添加失去焦点事件
    248     for (var i = 0; i < inputs.length; i++) {
    249         inputs[i].onblur = inputBlur;
    250     }
    251 
    252     function inputBlur() {
    253         var name = this.name;           // 获取输入框的name值
    254         var val = this.value;           // 获取输入框的value值
    255         var tips = this.placeholder;    // 获取输入框中的提示信息
    256         var tips_obj = this.parentNode.parentNode.children[2].children[0];  // 获取提示信息显示的div元素对象
    257         // 1. 去掉两端的空白字符
    258         val = val.trim();
    259         // 2. 文本框内容为空,给出提示信息
    260         if (!val) {
    261             error(tips_obj, '输入框不能为空');
    262             return false;
    263         }
    264         // 3. 获取正则匹配规则和提示信息
    265         var reg_msg = getRegMsg(name, tips);
    266         // 4. 检测是否否he正则匹配
    267         if (reg_msg['reg'].test(val)) {
    268             // 匹配成功,显示成功的提示信息
    269             success(tips_obj, reg_msg['msg']['success']);
    270         } else {
    271             // 匹配失败,显示失败的提示信息
    272             error(tips_obj, reg_msg['msg']['error']);
    273         }
    274     }
    275 
    276     // 根据input的name值,设置正则规则及提示信息
    277     function getRegMsg(name, tips) {
    278         var reg = msg = '';
    279         switch (name) {
    280             case 'userName':
    281                 reg = /^[a-zA-Z0-9]{2,10}$/;
    282                 msg = {'success': '用户名输入正确', 'error': tips};
    283                 break;
    284             case 'passWord':
    285                 reg = /^.{2,8}$/;
    286                 msg = {'success': '密码输入正确', 'error': tips};
    287                 break;
    288             case 'confirmPwd':
    289                 var con = document.getElementsByTagName('input')[1].value;
    290                 reg = RegExp("^" + con + "$");
    291                 msg = {'success': '两次密码输入正确', 'error': '两次输入的密码不一致'};
    292                 break;
    293             case 'birthday':
    294                 reg = /^d{4}-d{1,2}-d{1,2}/;
    295                 msg = {'success': '日期输入正确', 'error': '日期格式有误'};
    296                 break;
    297             case 'education':
    298                 reg = /^[0-2]*$/;
    299                 msg = {'success': '学历已选择', 'error': '学历不能为空'};
    300                 break;
    301             case 'tips':
    302                 msg = {'success': '备注输入正确', 'error': '备注不能为空'};
    303                 break;
    304         }
    305         return {'reg': reg, 'msg': msg};
    306     }
    307 
    308     area.onblur = function () {
    309         if (checkInput(this.value) === false) {
    310             error(this.parentNode.parentNode.children[2].children[0], '地区不能为空');
    311         } else {
    312             success(this.parentNode.parentNode.children[2].children[0], '已选择地区');
    313         }
    314     };
    315 
    316     // 成功
    317     function success(obj, msg) {
    318         obj.className = 'success';
    319         obj.innerHTML = msg;
    320     }
    321 
    322     // 失败
    323     function error(obj, msg) {
    324         obj.className = 'error';
    325         obj.innerHTML = msg + ',请重新输入';
    326     }
    327 
    328     /**
    329      * 判断输入内容
    330      * */
    331     function checkInput(content) {
    332         return !(content === "" || content.length === 0 || content === null || content === undefined);
    333     }
    334 
    335     document.getElementById("submitFormBtn").onclick = function () {
    336         var userName = document.getElementById("userName");
    337         var passWord = document.getElementById("passWord");
    338         var confirmPwd = document.getElementById("confirmPwd");
    339         var education = document.getElementsByName("education");
    340         var birthday = document.getElementById("birthday");
    341         var area = document.getElementById("area");
    342 
    343         var formElements = [userName, passWord, education[0], confirmPwd, birthday, area];
    344         for (var i = 0; i < formElements.length; i++) {
    345             var tips_obj = formElements[i].parentNode.parentNode.children[2].children[0];  // 获取提示信息显示的div元素对象
    346             if (checkInput(formElements[i].value) === false) {
    347                 error(tips_obj, '输入框不能为空');
    348                 return false;
    349             }
    350             if (tips_obj.className === 'error') {
    351                 return false;
    352             }
    353         }
    354 
    355         var flag = false;//检查radio是否被选中
    356         var education_value = "";
    357 
    358         for (var j = 0; j < education.length; j++) {
    359             if (education[j].checked) {
    360                 flag = true;
    361                 var edu_status = parseInt(education[j].value);
    362                 if (edu_status === 0) {
    363                     education_value = "专科";
    364                 } else if (edu_status === 1) {
    365                     education_value = "本科";
    366                 } else {
    367                     education_value = "硕士研究生";
    368                 }
    369                 break;
    370             }
    371         }
    372 
    373         if (flag === false) {
    374             var tips = education[0].parentNode.parentNode.children[2].children[0];  // 获取提示信息显示的div元素对象
    375             error(tips, '学历不能为空');
    376             return false;
    377         }
    378 
    379 
    380         var userInfo = [userName.value, passWord.value, education_value, birthday.value, area.value];
    381         var status = confirm("您的注册信息:" + "用户名" + userInfo[0] + ",密码:" + userInfo[1] + ",学历:" + userInfo[2] + ",生日:" + userInfo[3] + ",地区:" + userInfo[4]);
    382 
    383         if (status === true) {
    384             window.open("checkbox.html");
    385         } else {
    386             window.location.reload();
    387         }
    388         return true;
    389     };
    390 
    391     document.getElementById("selectTest").onclick = function () {
    392         window.location.href = "selectTest.html";
    393     };
    394 
    395 </script>
    396 <!--<script type="text/javascript" src="js/index.js"></script>-->
    397 </body>
    398 </html>
  • 相关阅读:
    c++ stl algorithm: std::find, std::find_if
    mysql---多表关联
    使用hadoop命令rcc生成Record 一个简单的方法来实现自己的定义writable对象
    Nexon由Xsolla全球支付服务
    configure.ac:20: error: Autoconf version 2.65 or higher is required
    的无线通信网络的学习LTE的关键技术HARQ(20141217)
    JAVA 公众微信的开放源码项目管理合作伙伴招募的版本号
    【工具】JAVA 在单元读取文件并比较
    linux下如何编译python生成libpython2.5.so动态库
    将主机IDS OSSEC日志文件存入MYSQL的方法
  • 原文地址:https://www.cnblogs.com/yijiahao/p/11770181.html
Copyright © 2011-2022 走看看