js和html实现简单的表单验证和多选框

这两天看了一部分前端的技术,自己动手写了一个表单验证登录的代码,然后再看了视频教程,在自己的基础上加以改进,编译器是vscode加上一些插件

表单验证

检测到错误
正确

表单验证实现:

  • 用户名不能为空且只能由字母和数字组成,长度在6~14之间
  • 用户名不合法将会在输入框后提示
  • 密码大于8位,还有确认密码一栏判断密码是否一致,不一致将会提示
  • 邮箱不合法在后面提示
  • 当信息不正确的时候,再次点击会自动清空错误的信息并将提示信息清空
  • 只有当全部的信息正确才可以提交信息

form.html

这里把表单放在table里面,是为了看起来整齐一些

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>Document</title>
</head>
<body>
   <script type="text/javascript" src="/js/form.js"></script>
       <form id="userForm" method="post">
           <table>
               <tr>
                   <td>用户名:</td>
                   <td><input id="username" type="text" name="username"/></td>
                   <td><span id="userNameError" style="color:red; font-size: 12px;"></span></td>
               </tr>
               <tr>
                   <td>密码:</td>
                   <td><input id="psw" type="password" name="password"/></td>
                   <td><span id="pswError" style="color:red; font-size: 12px;"></span></td>
               </tr>   
               <tr>
                   <td>确认密码:</td>
                   <td><input id="repsw" type="password"/></td>
                   <td><span id="rePswError" style="color:red; font-size: 12px;"></span></td>
               </tr> 
               <tr>
                   <td>邮箱:</td>
                   <td><input id="email" type="email" name="email"/></td>
                   <td><span id="emailError" style="color:red; font-size: 12px;"></span></td>
               </tr> 
               <tr>
                   <td colspan="2" align="center">
                       <input type="button" value="注册" id="submitBtn">
                       &nbsp;&nbsp;&nbsp;&nbsp;
                       <input type="reset" value="清空" id="reset">
                   </td>
               </tr>
       </table>
   </form>
</body>
</html>

form.js

//当界面加载完成时执行
window.onload = function(){
	//获取前端的username对象
    var userNameObj = document.getElementById("username");
    //获取userNameError的span对象
    var userNameErrorObj = document.getElementById("userNameError");
    //正则表达式判断用户名是否正确
    var userNameRegExp = /^[A-Za-z0-9]+$/;
	
	//获取pwd对象和pswError的span对象
    var pswObj = document.getElementById("psw");
    var pswErrorObj = document.getElementById("pswError");

	//获取repsw对象和rePswError的span对象
    var repswObj = document.getElementById("repsw");
    var rePswErrorObj = document.getElementById("rePswError");
	
	//获取email对象和emailError的span对象
    var emailObj = document.getElementById("email");
    var emialErrorObj = document.getElementById("emailError");
    //正则表达式判断邮箱格式是否正确
    var emailRegExp = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;

	//获取按钮元素
    var submitObj = document.getElementById("submitBtn");
    
    //当时去焦点时(即当用户输入完成后会自动判断是否正确,不正确进行提醒)
    userNameObj.onblur = function(){
    	//获取用户输入的值并用trim函数去除输入值前后的空格
        var username = userNameObj.value;
        username = username.trim();

		//这里用字符长度判断是否为空(也可以用username==""来判断,方法挺多的)
        if(username.length == 0){
            userNameErrorObj.innerText = "用户名不能为空!";
        }else{//当不为空串的时候
        	//这里也是长度判断
            if(username.length>14 || username.length < 6){
                userNameErrorObj.innerText="用户名长度应在6~14之间!";
            }else if(!userNameRegExp.test(username)){
            	//正则表达式判断
                userNameErrorObj.innerText="非法字符,用户名只能由字母和数字组成";
            }else{//程序执行到这里说明没有问题,不进行提示
                userNameErrorObj.innerText="";
            }
        }
    }
	
	//当出现错误提示时,用户鼠标点击之后自动清空错误信息和提示信息
    userNameObj.onfocus = function(){
        if(userNameErrorObj.innerText!=""){
            userNameObj.value = "";
        }
        userNameErrorObj.innerText="";
    }

    pswObj.onblur = function(){
        var psw = pswObj.value;
        psw = psw.trim();
        if(psw.length < 8){
            pswErrorObj.innerText = "密码长度应大于8";
        }
    }

    pswObj.onfocus = function(){
        var psw = pswObj.value;
        psw = psw.trim();
        if(pswErrorObj.innerText!=""){
            pswObj.value = "";
        }
        pswErrorObj.innerText="";
    }


    repswObj.onblur = function(){
        var repsw = repswObj.value;
        repsw = repsw.trim();

        var psw = pswObj.value;
        psw = psw.trim();

        if(repsw != psw){
            rePswErrorObj.innerText = "密码不一致,请重新输入!";
        }
    }

    repswObj.onfocus = function(){
        if(rePswErrorObj.innerText!=""){
            repswObj.value = "";
        }
        rePswErrorObj.innerText = "";
    }

    emailObj.onblur = function(){
        var email = emailObj.value;
        email = email.trim();

        if(!emailRegExp.test(email)){
            emialErrorObj.innerText = "邮箱地址不合法,请重新输入!";
        }
    }

    emailObj.onfocus = function(){
        if(emialErrorObj.innerText!=""){
            emailObj.value = "";
        }
        emialErrorObj.innerText = "";
    }

	//当点击按钮的时候触发函数,进行信息判断,如果全部正确则提交
    submitObj.onclick = function(){
    	//这里设置提交时判断,避免用户不输入直接点击提交而误触发提交
        userNameObj.focus();
        pswObj.focus();
        rePswNameObj.focus();
        emailObj.focus();

        userNameObj.blur();
        pswObj.blur();
        rePswNameObj.blur();
        emailObj.blur();
        //当没有错误的信息,提交表单
        if(userNameErrorObj.innerText=="" && pswErrorObj.innerText=="" && rePswErrorObj.innerText=="" && emialErrorObj.innerText==""){
            var userFormObj = document.getElementById("userForm");
            userFormObj.action = "http://localhost:8080";
            userFormObj.submit();
        }
    }
}

这个验证还是比较基础的功能,可以在这上面进行升级的,这里只是作为学习,暂时不往深处去改进

多选框

在这里插入图片描述

多选框实现:

  • 当点击全选时,下面的按钮全勾选上
  • 当取消全选时,下面的框全取消

allSelect.js

window.onload = function(){
	//获取全选框对象
    var firstCheckBoxObj = document.getElementById("firstCheckBox");
    //当全选框选中时触发函数
    firstCheckBoxObj.onclick = function(){
    	//接收全选框下面的checkBox,并存在positions数组里(这里用获取name的方式获取CheckBox对象)
        var positions = document.getElementsByName("position");
        //当全选框被选中时,会有一个checked函数触发,将多选框的状态变为选中
        //当需要全选时,只需要用循环将其他的CheckBox的状态都改为选中即可
        //不需要全选时,将多选框取消选中,再用循环给每一个CheckBox的状态都改为和多选框一样
        //这样就实现了全选的功能
        for(var i=0;i<positions.length;i++){
            positions[i].checked = firstCheckBoxObj.checked;
        }
    }
}

allSelect.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script src="/js/allSelect.js"></script>
    <input id="firstCheckBox" type="checkbox">全选<br>
    <input id="checkBox1" name="position" type="checkbox" value="shangdan">上单<br>
    <input id="checkBox2" name="position" type="checkbox" value="zhongdan">中单<br>
    <input id="checkBox3" name="position" type="checkbox" value="daye">打野<br>
    <input id="checkBox4" name="position" type="checkbox" value="fuzhu">辅助<br>
    <input id="checkBox5" name="position" type="checkbox" value="ad">ad<br>
</body>
</html>

时间过得太快了,一转眼半个学期就结束了,不知道这个学期能不能自己动手设计实现出一个完整的系统,加油啊

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 HTML 中,多选框使用 `<input type="checkbox">` 标签来创建。当用户不选中任何一个多选框时,浏览器不会将任何多选框的值提交给服务器。因此,在服务器端,我们可以通过判断相应的多选框是否被提交来判断用户是否没有选中任何一个多选框。 例如,如果我们有一个名为 `checkbox_group` 的多选框组,可以使用以下代码来判断用户是否没有选中任何一个多选框: ```php if (!isset($_POST['checkbox_group'])) { // 用户没有选中任何一个多选框 } ``` 在上面的代码中,`$_POST['checkbox_group']` 表示用户提交的名为 `checkbox_group` 的多选框组的值。如果该值不存在,说明用户没有选中任何一个多选框。 ### 回答2: 判断多选框是否都没有选中可以通过以下方法: 1. 循环遍历所有的多选框,判断每个多选框是否被选中。若有一个多选框被选中,则说明至少选中了一个,否则所有多选框都没有选中。 2. 给每个多选框添加一个点击事件监听器。当一个多选框被点击时,检查所有多选框的选中状态。若没有一个多选框被选中,则说明所有多选框都没有选中。 3. 给所有多选框添加相同的类名或者属性,使用选择器获取这些多选框的元素集合。遍历所有多选框,判断每个多选框的选中状态。若没有一个多选框被选中,则说明所有多选框都没有选中。 4. 使用JavaScript的选取器方法获取多选框元素,然后使用循环遍历每个多选框,判断其选中状态。若没有一个多选框被选中,则返回相应的提示信息。 以上方法可以用于判断多选框是否都没有选中,开发者可根据具体需求选取适合的方法。 ### 回答3: 判断多选框是否都没有选中,通常可以通过以下几种方式进行判断: 1. 使用JS/jQuery:可以通过获取多选框的选中数量,判断是否为0来确定是否都没有选中。例如: ```javascript var checkboxes = document.getElementsByName('checkbox'); var checkedCount = 0; for(var i=0; i<checkboxes.length; i++) { if(checkboxes[i].checked) { checkedCount++; } } if(checkedCount == 0) { // 说明都没有选中 } ``` 2. 使用HTML表单验证:在HTML中使用`required`属性可以要求至少一个多选框必须被选中。通过设置多选框的`required`属性,只需要对表单进行提交时,会自动验证是否有选中的多选框。如果没有选中的多选框表单提交会被阻止,并出现提示信息。 ```html <form> <input type="checkbox" name="checkbox" required> 选项1 <input type="checkbox" name="checkbox" required> 选项2 <input type="checkbox" name="checkbox" required> 选项3 <button type="submit">提交</button> </form> ``` 3. 后端验证:后端可以接收前端提交的数据,在服务器端进行判断。通过检查多选框的选中状态是否为空,可以确定是否都没有选中。具体实现方法因后端语言和框架而异,例如,在PHP中可以使用以下代码进行判断: ```php $checkboxes = $_POST['checkbox']; if(empty($checkboxes)) { //都没有选中 } ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值