JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)

发布时间 - 2026-01-11 01:48:50    点击率:

问题:表单怎么在输入后立即验证,而不是提交后再验证那么不方便(网上搜到的要么是模棱两可,要么是残缺不全…)

方法:鉴于此,加上我个人的理解(注释)在上面。

截图:

代码:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>用户注册</title>
<!-- 此处引用外部css样式 -->
<link rel="stylesheet" href="css/style.css" rel="external nofollow" />
  <script type="text/javascript">
  //及时验证用户名
  function checkuse(){
     //在每个函数中定义check变量是为了在表单提交后,能够逐个验证每个函数是否通过,很好很好。(以下同理)
     var check; 
     var username = document.getElementById("username").value; 
     if (username.length > 18 || username.length < 6) { 
       alert("用户名输入不合法,请重新输入!");
       //此处甚妙,既然你在此处输入错误,那么按理说当然要在此处继续输入了。(在此处继续获取焦点!)
       document.getElementById("username").focus();
       check = false; 
      } else { 
       document.getElementById("checktext1").innerHTML = "* 用户名由6-18位字符组成 √"; 
       check = true; 
      } 
      return check; 
    } 
  //利用正则表达式判断密码符合否
  function checkpwd() { 
    var check; 
    var reg = /[^A-Za-z0-9_]+/;
    var regs = /^[a-zA-Z0-9_\u4e00-\u9fa5] + $ /;
    var password = document.getElementById("password").value; 
    if (password.length < 6 || password.length > 18 || regs.test(password)) { 
      alert("密码输入不合法,请重新输入!");
      document.getElementById("password").focus();
      check = false; 
    } else { 
      document.getElementById("checktext2").innerHTML = "* 密码由6-18位字符组成,且必须包含字母、数字和标点符号 √"; 
      check = true; 
    } 
    return check; 
  } 
  //验证密码是否不一致!
  function checkpwdc() { 
    var check; 
    var password = document.getElementById("password").value; 
    var pwdc = document.getElementById("pwdc").value; 
    if (password != pwdc) { 
      alert("两次输入密码不一致,请重新输入!");
      document.getElementById("pwdc").focus();
      check = false; 
    } else { 
      document.getElementById("checktext3").innerHTML = "* 请再次输入你的密码 √"; 
      check = true; 
    } 
    return check; 
  }
  //提交时验证用户类别
  function checkut(){
    var check; 
    if(document.getElementById("selUser").selectedIndex == 0)
      {
        alert("请选择用户类型!");
        document.getElementById("selUser").focus();
        check = false; 
      }else{
        document.getElementById("checktext4").innerHTML = "* 请选择用户类型 √"; 
        check = true; 
      }
    return check;  
  }
  //提交时验证用户性别
  function checkGender(){
    var check; 
    var gender = "";
    //获取所有名称为sex的标签
    var sex = document.getElementsByName("sex");
    //遍历这些名称为sex的标签
    for(var i=0;i<sex.length;++i){
      //如果某个sex被选中,则记录
      if(sex[i].checked)
        gender = sex[i].value;   
    }
    if(gender == "")
      {
        alert("请选择性别!");
        check = false;
      }else{
        document.getElementById("checktext5").innerHTML = "* 请选择你的性别 √"; 
        check = true; 
      }  
    return check;
  }
  //及时验证出生日期
  function checkDate(){
    var check; 
    if(document.getElementById("txtDate").value ==""){
       alert("请填写出生日期!");
       document.getElementById("txtDate").focus();
       check = false;
      }else{
        document.getElementById("checktext6").innerHTML = "* 请选择你的出生日期 √"; 
        check = true;
      }
    return check;
  }
  //及时验证兴趣爱好
  function checkHobby(){
    var check; 
    var hobby = 0;
    //objNum为所有名称为hobby的input标签
    var objNum = document.getElementsByName("hobby");
    //遍历所有hobby标签
    for(var i=0;i<objNum.length;++i){
      //判断某个hobby标签是否被选中
      if(objNum[i].checked==true)
        hobby++;
    }  
    //如果有选中的hobby标签
    if(hobby >=1){
      document.getElementById("checktext7").innerHTML = "* 请选择你的兴趣爱好 √";     
      check = true;
    }else{
      alert("请填写爱好!");
      check = false;
    }
    return check;  
  }
  //正则表达式验证电子邮件(及时)
  function checkemail(){
    var check; 
    //电子邮件的正则表达式
    var e1 = document.getElementById("email").value.indexOf("@",0);
    var e2 = document.getElementById("email").value.indexOf(".",0);
    if(email == "" || (e1==-1 || e2==-1) || e2<e1 )
    {
      alert("E_mail输入错误!");
      document.getElementById("email").focus();
      check = false;
    } else { 
      document.getElementById("checktext8").innerHTML = "* 请填写常用的EMAIL,将用于密码找回 √"; 
      check = true; 
    } 
    return check; 
  } 
  //及时验证自我介绍
  function checkintro(){
    var check;  
    var intro = document.getElementById("introduction").value; 
    if (intro.length > 100) { 
     alert("字数超限!"); 
     check = false; 
    } else { 
     document.getElementById("checktext9").innerHTML = "* 限100字内 √";
     document.getElementById("checktext9").focus();
     check = true; 
    } 
    return check; 
  } 
  //提交表单时所有都验证一遍(若任何一个验证不通过,则返回为false,阻止表单提交)
  function check() { 
    var check = checkuse() && checkpwd() && checkpwdc() && checkut() && checkGender() && checkDate() && checkHobby()
     && checkemail() &&checkintro(); 
    return check;  
  } 
  </script>
</head>
<body >
<!-- <form action ="跳转页面" method ="get"|"post" name ="表单名称" target ="打开方式" enctype="multipart/form-data" > -->
<!-- onsubmit()函数在返回值为true时提交表单。 -->
<form action="#" method="get" onsubmit="return check()" >
<fieldset>
<legend>
 表单及时验证小例子
</legend>
<table align="left" style="background-image: url('img/4.jpg');" >
  <tr>
   <td>用户名:</td>
   <td><input type="text" name="username" id="username" onchange=" checkuse()" /></td>
   <td id="checktext1">* 用户名由6-18位字符组成</td>
  </tr>
  <!-- onblur 事件处理程序:当元素或窗口失去焦点时触发该事件 -->
  <!-- onchange事件处理程序:当表单元素获取焦点,并且内容发生改变时,触发该事件 -->
  <!-- 以下同理 -->
  <tr>
   <td>密码:</td>
   <td><input type="password" name="password" id="password" onchange="checkpwd()" /></td>
   <td id="checktext2">* 密码由6-18位字符组成,且必须包含字母、数字和标点符号</td>
  </tr>
  <tr>
   <td>确认密码:</td>
   <td><input type="password" name="pwdc" id="pwdc" onchange="checkpwdc()" /></td>
   <td id="checktext3">* 请再次输入你的密码</td>
  </tr>
  <tr>
   <td>用户类型:</td>
   <td>
     <select id="selUser" onblur="checkut()">
       <option name="selUser" value="0">请选择</option>
       <option name="selUser" value="1">管理员</option>
       <option name="selUser" value="2">普通用户</option>   
     </select>
   </td>
   <td id="checktext4">* 请选择用户类型</td>
  </tr>
  <tr>
   <td>性别:</td>
   <td>
     <input type="radio" value="1" name="sex" onchange="checkGender()"/>男
     <input type="radio" value="2" name="sex" onchange="checkGender()"/>女
   </td>
   <td id="checktext5">* 请选择你的性别</td>
  </tr>
  <tr>
   <td>出生日期:</td>
   <td><input type="date" name="date" id="txtDate" onblur="checkDate()"/></td>
   <td id="checktext6">* 请选择你的出生日期</td>
  </tr>
  <tr>
   <td>兴趣爱好:</td>
   <td>
     <input type="checkbox" name="hobby" value="reading" onchange="checkHobby()">阅读
     <input type="checkbox" name="hobby" value="music" onchange="checkHobby()">音乐
     <input type="checkbox" name="hobby" value="sports" onchange="checkHobby()">运动
   </td>
   <td id="checktext7">* 请选择你的兴趣爱好</td>
  </tr>
  <tr>
   <td>电子邮件:</td>
   <td><input type="text" name="email" id="email" onchange="checkemail()"/></td>
   <td id="checktext8">* 请填写常用的EMAIL,将用于密码找回</td>
  </tr>
  <tr>
   <td>自我介绍:</td>
   <td><textarea cols="30" rows="3" name="introduction" id="introduction" onchange="checkintro()">这是自我介绍...</textarea></td>
   <td id="checktext9">* 限100字内</td>
  </tr>
  <tr>
   <td colspan="2" align="center">
     <input type="submit" name="submit" value="提交" />
     <input type="reset" name="reset" value="重置" />
   </td>
  </tr>
</table>
</fieldset>
</form>
</body>
</html>

CSS样式:

 input:focus,textarea:focus{
    border:1px solid #f00;
    background:#fcc;
  }
  textarea{
    width:230px;
    height:50px;
  }
  body
  {
    font-size:15px;
    /* 字体的样式 */
    font-family:Microsoft YaHei;  
  }
  select option{
    font-size:10px;
    font-family:Microsoft YaHei;
  }

以上所述是小编给大家介绍的JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# javaweb  # 表单及时验证  # Javaweb中Request获取表单数据的四种方法详解  # JavaWeb实现表单提交的示例详解  # 解决Javaweb 提交表单到servlet时出现空白页面  # 但网站不报错问题  # Javaweb接收表单数据并处理中文乱码  # Java后台防止客户端重复请求、提交表单实现原理  # JavaWeb表单注册界面的实现方法  # Javaweb获取表单数据的多种方式  # Java后台开发之表单提交之前验证  # java后台防止表单重复提交方法详解  # 请选择  # 表单  # 出生日期  # 请填写  # 兴趣爱好  # 自我介绍  # 很好  # 遍历  # 电子邮件  # 重新输入  # 小编  # 不合法  # 正则表达式  # 这是  # 在此  # 模棱两可  # 你在  # 两次  # 要在  # 一遍 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录  高防服务器租用首荐平台,企业级优惠套餐快速部署  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  如何用PHP快速搭建CMS系统?  Python函数文档自动校验_规范解析【教程】  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  在线教育网站制作平台,山西立德教育官网?  Laravel如何处理文件下载请求?(Response示例)  linux top下的 minerd 木马清除方法  Android实现代码画虚线边框背景效果  南京网站制作费用,南京远驱官方网站?  什么是javascript作用域_全局和局部作用域有什么区别?  如何在建站主机中优化服务器配置?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  焦点电影公司作品,电影焦点结局是什么?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Bootstrap整体框架之JavaScript插件架构  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何挑选高效建站主机与优质域名?  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  如何快速完成中国万网建站详细流程?  如何在建站之星绑定自定义域名?  微信推文制作网站有哪些,怎么做微信推文,急?  深圳网站制作平台,深圳市做网站好的公司有哪些?  MySQL查询结果复制到新表的方法(更新、插入)  网站制作企业,网站的banner和导航栏是指什么?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  用yum安装MySQLdb模块的步骤方法  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Laravel如何实现事件和监听器?(Event & Listener实战)  Laravel如何升级到最新版本?(升级指南和步骤)  Python文本处理实践_日志清洗解析【指导】  北京的网站制作公司有哪些,哪个视频网站最好?  如何快速搭建高效WAP手机网站吸引移动用户?  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  微信h5制作网站有哪些,免费微信H5页面制作工具?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  中山网站推广排名,中山信息港登录入口?  如何用PHP工具快速搭建高效网站?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  敲碗10年!Mac系列传将迎来「触控与联网」双革新  如何快速搭建二级域名独立网站?  Laravel如何实现多对多模型关联?(Eloquent教程)  长沙企业网站制作哪家好,长沙水业集团官方网站?  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  如何快速搭建FTP站点实现文件共享?