点击注册按钮,会出现提示“请与所请求的格式保持一致”?
来源: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>密 码</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>


点击注册按钮,会出现提示“请与所请求的格式保持一致”?这是什么,在代码中找不到,是浏览器自带的功能吗,怎么解决?
两外两张图是有时候点击确定之后还会重复弹出alert窗口点击确定,缩小页面再打开则会正常。然后有时候输入了会卡在输入框,鼠标点击别的框没点进去输不了内容,缩小页面再打开则会正常。这样子用户体验也太差了,怎么解决?
1回答
同学你好!
点击注册按钮,会出现提示“请与所请求的格式保持一致”,是因为在代码中添加了pattern进行校验,所以不符合时会给出提示

点击确定之后还会重复弹出alert窗口点击确定的原因是因为Onblur重复触发,这种现象经常出现在chrome浏览器中,建议同学在使用onblur时不要调用alert,confirm之类的能挂起js执行的代码,同学可以先使用标识来保存输入的信息是否正确,最后提交时一起判断是否都正确。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~
相似问题