点击注册按钮,会出现提示“请与所请求的格式保持一致”?

来源:2-5 作业题

bbb绑绑绑

2019-05-19 12:25:08

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
 String basePath=request.getContextPath();
 request.setAttribute("basePath",basePath);
%>
<!-- //第1步(用户注册页面)-2 User.java -->
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>注册界面</title>
</head>
<script type="text/javascript" src="js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
  //boolean flag;注意:JS中的所有的变量创建,是不区分类型的,只有在赋值的时候才区分,否则报错
  //scricp中函数声明用funciton
  function checkUsername(){
   var  usernameRegex = /^[a-zA-Z_0-9]{3,12}$/;//\w{3,12}$/; 
   //var usernameRegex="[a-zA-Z0-9]{6,12}";//因为会报错usernameRegex.test is not a function
   //flag=document.getElementById("username").value.matches(usernameRegex);因为matches(usernameRegex);无法在scricp中识别,所以我们用test校验!
   //知识点:1.test() 方法用于检测一个字符串是否匹配某个模式.如果字符串中有匹配的值返回 true ,否则返回 false。
   //知识点:2.test()使用方法:必须用一个function调用test(),否则报错
   var username=document.getElementById("username").value;
   if(!usernameRegex.test(username)){
    document.getElementById("username").value="";
    window.confirm("用户名格式不正确!");
   }else{
    return;
   }
  }  
  function checkPassword(){    
   var passwordRegex=/^\d{6,12}$/;
   var password=document.getElementById("password").value;
   if(!passwordRegex.test(password)){
    document.getElementById("password").value="";
    alert("密码格式不正确!");
   }else{
    return;
   }
  }
  function checkCheckPWD(){
   var password=document.getElementById("password").value;
    if(document.getElementById("password").value!=document.getElementById("checkPWD").value){
     alert("密码输入不一致!");
    document.getElementById("checkPWD").value="";
   }else{
    return;
   }
  }
  function checkPhone(){
   var phoneRegex=/^1[0-9]{10}$/;
   var phone=document.getElementById("phone").value;
   if(!phoneRegex.test(phone)){
    alert("电话号码格式不正确!");
   }else{
    return;
   }
  }
  function checkEmail(){
   var emailRegex=/^[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\d+)(\.[a-zA-Z]+)+$/; //因为是写在function里面的,所以不需要写\\.只需要写成\.即可 
   var email=document.getElementById("email").value;
   if(! emailRegex.test(email)){
    alert("邮箱格式不正确!");
   }else{
    return;
   }
  }
</script>
<body>
 <center>
  <h1>用户注册</h1>
  <!-- 设置失去焦点事件onblur(),然后实现校验代码 -->
  <form action="<%=basePath%>/RegistServlet" method="post" enctype="multipart/form-data">
   <table width="400px" cellspacing="0px" cellpadding="0px" border="1px">
    <tr>
     <td>用户名</td>
     <td><input type="text" name="username" placeholder="用户名为3-12位字母数字或下划线组合" id="username" pattern="[a-zA-Z0-9]{3,12}"  onblur="checkUsername()"></td>
    </tr>
    <tr>
     <td>密&nbsp;码</td>
     <td><input type="password" name="password" placeholder="密码长度为6-12位的纯数字"  id="password" pattern="[0,9]{6,12}"onblur="checkPassword()"></td>
    </tr>
    <tr>
     <td>确认密码</td>
     <td><input type="password" name="checkPWD" placeholder="密码长度为6-12位的纯数字" id="checkPWD" pattern="[0,9]{6,12}"onblur="checkCheckPWD()"></td>
    </tr>
    <tr>
     <td>手机号码</td>
     <td><input type="text" name="phone" placeholder="请输入正确的手机号码格式" id="phone" pattern="1\d{10}"onblur="checkPhone()" ></td>
    </tr>
    <tr>
     <td>邮箱</td>
     <td><input type="email" name="email" placeholder="请输入正确邮箱格式" id="email" pattern="[a-zA-Z_0-9]{3,}@([a-zA-Z]+|\\d+)(\\.[a-zA-Z]+)+" required="required"onblur="checkEmail()"></td>
    <!--  required 属性是一个布尔属性。required 属性规定必需在提交表单之前填写输入字段。-->
    </tr>
    <tr>
     <td colspan="2" style="text-align:center">
      <input type="submit" value="注册">
      <input type="reset" value="重置">
     </td>
    </tr>
   </table>
  </form>
 </center>
 
</body>
</html>

http://img.mukewang.com/climg/5ce0d92e0001ea5610150519.jpg

http://img.mukewang.com/climg/5ce0d92e0001d3dc07030383.jpg

http://img.mukewang.com/climg/5ce0d92e0001361719201080.jpg

  1. 点击注册按钮,会出现提示“请与所请求的格式保持一致”?这是什么,在代码中找不到,是浏览器自带的功能吗,怎么解决?

  2. 两外两张图是有时候点击确定之后还会重复弹出alert窗口点击确定,缩小页面再打开则会正常。然后有时候输入了会卡在输入框,鼠标点击别的框没点进去输不了内容,缩小页面再打开则会正常。这样子用户体验也太差了,怎么解决?


写回答

1回答

好帮手慕柯南

2019-05-19

同学你好!

  1. 点击注册按钮,会出现提示“请与所请求的格式保持一致”,是因为在代码中添加了pattern进行校验,所以不符合时会给出提示

    http://img.mukewang.com/climg/5ce0fa0200014d6e08160122.jpg

  2. 点击确定之后还会重复弹出alert窗口点击确定的原因是因为Onblur重复触发,这种现象经常出现在chrome浏览器中,建议同学在使用onblur时不要调用alert,confirm之类的能挂起js执行的代码,同学可以先使用标识来保存输入的信息是否正确,最后提交时一起判断是否都正确。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


0

0 学习 · 10204 问题

查看课程