jsp中对表单用javascript初步校验出现的乱码问题
jsp中对表单进行初步校验出现的乱码问题,是span区域中出的比如
<span id="usernamespan"></span>
这上面的用javascript校验会回显消息,中文字符出现了乱码;
下面是jsp源码和javascript代码;
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page contentType="text/html;charset=utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>注册页面</title>
</head>
<script type="text/javascript"
src="${pageContext.request.contextPath }/js/register.js">
</script>
<body style="text-align: center; margin: 0px; padding: 0px">
<c:if test="${message==null }">
<div>
<form
action="${pageContext.request.contextPath }/servlet/RegisterServlet"
method="post">
<div>
用户名:
<input type="text" name="username" onblur="checkUsername(this)"
value="${form.username }" />
<span class="message">${form.errors.username }</span>
<span id="usernamespan"></span>
</div>
<br />
<div>
密 码:
<input type="password" name="password" onblur="checkPassword(this)"
value="${form.password }" />
<span class="message">${form.errors.password }</span>
<span id="passwordspan"></span>
</div>
<br />
<div>
确认密码:
<input type="password" name="repassword"
onblur="checkRepassword(this)" value="${form.repassword }" />
<span class="message">${form.errors.repassword }</span>
<span id="repasswordspan"></span>
</div>
<br />
<div>
邮箱:
<input type="text" name="email" onblur="checkEmail(this)" value="${form.email }" />
<span class="message">${form.errors.email }</span>
<span id="emailspan"></span>
</div>
<br />
<div>
生日:
<input type="text" name="birthday" value="${form.birthday }" />
<span class="message">${form.errors.birthday }</span>
</div>
<br />
<div>
昵称:
<input type="text" name="nickname" onblur="checkNickname(this)" value="${form.nickname}" />
<span class="message">${form.errors.nickname }</span>
<span id="nicknamespan"></span>
</div>
<br />
<div>
验证码:
<input type="text" name="checkcode" onblur="checkCheckcode(this)"/>
<img alt="jsp中对表单用javascript初步校验出现的乱码有关问题"
src="${pageContext.request.contextPath }/servlet/GenerateImage"
onclick="changeImage(this)" style="cursor: hand" />
<br />
<span class="message">${form.errors.checkcode }</span>
<span id="checkcodespan"></span>
</div>
<br />
<div>
<input type="hidden" name="id" value="${id }" />
<input type="submit" value="注册" />
<input type="reset" value="重置" />
</div>
</form>
</div>
</c:if>
<c:if test="${message!=null }">
<font color="red" size="40">${message }</font>
</c:if>
</body>
</html>
javascript代码;
function changeImage(image) {
image.src = image.src + "?" + new Date().getTime();
}
function checkUsername(username) {
var value = username.value;
var regex = new RegExp("^[a-zA-Z][A-Za-z0-9_]{4,19}$");
var usernameSpan = document.getElementById("usernamespan");
if (value.match(regex)) {
usernameSpan.innerHTML = "用户名格式正确".fontcolor("green");
} else {
usernameSpan.innerHTML = "用户名必须为5-20位数字、字母或下划线组合,必须以字母开头"
.fontcolor("red");
}
}
function checkPassword(password) {
var value = password.value;
var regex = new RegExp("^[A-Za-z0-9]{5,}$");
var passwordSpan = document.getElementById("passwordspan");
if (value.match(regex)) {
passwordSpan.innerHTML = "密码格式正确".fontcolor("green");
} else {
passwordSpan.innerHTML = "必须为五位以上数字或字母"
.fontcolor("red");
}
}
function checkRepassword(repassword) {
var revalue = repassword.value;
var value=document.getElementsByName("password")[0].value;
var repasswordSpan = document.getElementById("repasswordspan");
if(""==revalue||null==revalue){
repasswordSpan.innerHTML="密码不得为空".fontcolor("red");
return;
}
if (value==revalue) {
repasswordSpan.innerHTML = "两次密码一致".fontcolor("green");
} else {
repasswordSpan.innerHTML = "两次密码不一致"
.fontcolor("red");
}
}
function checkEmail(email) {
var value = email.value;
var regex = new RegExp("^[A-Za-z0-9_]+@[a-zA-Z0-9]+(\\.[A-Za-z0-9]+)+$");
var emailSpan = document.getElementById("emailspan");
if (value.match(regex)) {
emailSpan.innerHTML = "邮箱格式正确".fontcolor("green");
} else {
emailSpan.innerHTML = "邮箱格式不正确"
.fontcolor("red");
}
}
function checkNickname(nickname) {
var value = nickname.value;
var regex = new RegExp("^[\u4e00-\u9fa5]{3,8}$");
var nicknameSpan = document.getElementById("nicknamespan");
if (value.match(regex)) {
nicknameSpan.innerHTML = "昵称格式正确".fontcolor("green");
} else {
nicknameSpan.innerHTML = "昵称必须要为3-8位中文"
.fontcolor("red");
}
}
function checkCheckcode(checkcode) {
var value = checkcode.value;
var regex = new RegExp("^[\u4e00-\u9fa5]{3,8}$");
var checkcodeSpan = document.getElementById("checkcodespan");
if (value.match(regex)) {
checkcodeSpan.innerHTML = "验证码格式正确".fontcolor("green");
} else {
checkcodeSpan.innerHTML = "验证码必须为4位中文"
.fontcolor("red");
}
}
补充:servlet中都统一了编码utf-8,没有用过滤器;
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
这个怎么回事啊???亲们支支招啊!!!
[最优解释]
最后一句改成response.setContentType("text/plain");试试
------其他解决方案--------------------
后来是将js文件用记事本另存为UTF-8格式解决的!
再后来其实发现myeclipse中也可以设置文件的编码!
还是谢谢了!