浏览 405 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-07-26
由于前期使用的Ext,在性能上问题比较明显,所以最近转YUI和JQuery,拿YUI做了一个用户注册校验的小测试,感觉还可以,贴上来与大伙分享.
<%@ include file="/components/core/taglib.jsp"%>
<link rel="stylesheet" type="text/css"
href="<c:url value="/scripts/lib/yui/build/fonts/fonts-min.css"/>" />
<script type="text/javascript"
src="<c:url value="/scripts/lib/yui/build/yahoo-dom-event/yahoo-dom-event.js"/>"></script>
<script type="text/javascript"
src="<c:url value="/scripts/lib/yui/build/dom/dom-mini.js"/>"></script>
<script type="text/javascript"
src="<c:url value="/scripts/lib/yui/build/animation/animation.js"/>"></script>
<script type="text/javascript"
src="<c:url value="/scripts/lib/yui/build/yahoo/yahoo.js"/>"></script>
<script type="text/javascript"
src="<c:url value="/scripts/lib/yui/build/event/event.js"/>"></script>
<script type="text/javascript"
src="<c:url value="/scripts/lib/yui/build/connection/connection.js"/>"></script>
<script type="text/javascript"
src="<c:url value="/scripts/lib/yui/build/json/json-min.js"/>"></script>
<style type="text/css">
#message {
background: #FFFFFF;
margin-bottom: 1px;
margin-left: 2px;
margin-right: 2px;
margin-top: 2px;
padding-left: 5px;
padding-top: 2px;
font-size: 13px;
height: 25px;
autoWidth: true;
border: 1px solid #887EBE;
}
</style>
<div class="basic-common-container">
<div class="default-mini-container-title">
<s:text name="faceye.security.user.register"></s:text>
</div>
<div class="default-mini-container-content">
<div id="message">
</div>
<script type="text/javascript">
(function() {
function suggest(){
var attributes = {
color: { to: '#FFFFFF' },
backgroundColor: { to: '#FF4500' }
};
//backgroundColor: { to: '#e06' }
//#FF4500
var anim = new YAHOO.util.ColorAnim('message', attributes);
var message=YAHOO.util.Dom.get('message');
//messageDoc.text='Message text';
//message.appendChild(messageDoc);
YAHOO.util.Dom.insertAfter('div',message);
//message.createChildren('span','tt');
message.innerHTML='<span id="suggest-message"><s:text name="faceye.security.register.recommend" /></span><br/>';
anim.animate();
};
/**
* load suggest message win documnet ready
*/
YAHOO.util.Event.on(window, 'load', function(e) {
suggest();
});
/**
* change background color when error accous
*/
function errorMessageBackgroundColor(){
var errorAttributes= {
color: { to: '#FFFFFF' },
backgroundColor: { to: '#e06' }
};
var errorAnim=new YAHOO.util.ColorAnim('message', errorAttributes);
errorAnim.animate();
};
//user name validator;
///^(([a-zA-Z0-9]|[_-]){4,20}|[\u4e00-\u9fa5]{2,10})+$/
//^[0-9a-zA-Z\u4e00-\u9fa5]+$
///^\s*[.A-Za-z0-9_-]{4,20}\s*$/
//^[0-9a-zA-Z\u4e00-\u9fa5]+$
//email:/^([-_A-Za-z0-9\.]+)@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/
function validatorUserName(){
var filter=/^[0-9a-zA-Z\u4e00-\u9fa5]+$/;
var emailFilter=/^([-_A-Za-z0-9\.]+)@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
var username=YAHOO.util.Dom.get('entity.username').value;
var match=filter.test(username);
if(match){
if(username.length<2 || username.length >20){
match=false;
}
}else{
match=emailFilter.test(username);
if(match){
YAHOO.util.Dom.get('entity.email').value=username;
YAHOO.util.Dom.get('entity.email').readOnly=true;
isEmailAvailiable();
}
}
if(match){
isUserNameAvailiable();
}
return match;
};
//is user name be used?
function isUserNameAvailiable(){
var username=YAHOO.util.Dom.get('entity.username').value;
var callback={
success:function(o){
var result=YAHOO.lang.JSON.parse(o.responseText);
var message=YAHOO.util.Dom.get('message');
if(result.exist==='no'){
errorMessageBackgroundColor();
if(!YAHOO.util.Dom.get('error-server-side-username')){
message.innerHTML+='<span id="error-server-side-username"><s:text name="faceye.security.user.username"/><strong><font color="yellow">'+username+'</font></strong></span><s:text name="faceye.validator.security.user.username.exist"/><br/>';
}
}else{
message.innerHTML+='<span><s:text name="faceye.security.user.username"/><strong><font color="yellow">'+username+'</font></strong></span><s:text name="faceye.validator.security.user.username.could.use"/><br/>';
}
},
failure:function(o){
}
};
var req=YAHOO.util.Connect.asyncRequest('POST', base.path+'security/isUserNameAvailable.do', callback,'username='+username);
}
//is email be used?
function isEmailAvailiable(){
var email=YAHOO.util.Dom.get('entity.email').value;
var callback={
success:function(o){
var result=YAHOO.lang.JSON.parse(o.responseText);
var message=YAHOO.util.Dom.get('message');
if(result.exist==='no'){
errorMessageBackgroundColor();
if(!YAHOO.util.Dom.get('error-server-side-email')){
message.innerHTML+='<span id="error-server-side-email"><s:text name="faceye.security.user.email"/><strong><font color="yellow">'+email+'</font></strong></span><s:text name="faceye.validator.security.user.email.exist"/><br/>';
}
}else{
message.innerHTML+='<span><s:text name="faceye.security.user.email"/><strong><font color="yellow">'+email+'</font></strong></span><s:text name="faceye.validator.security.user.username.could.use"/><br/>';
}
},
failure:function(o){
}
};
var req=YAHOO.util.Connect.asyncRequest('POST', base.path+'security/isEmailAvailable.do', callback,'email='+email);
}
//passowrd validator;
function validatorPassword(){
var filter=/^s*[A-Za-z0-9]{4,20}s*$/;
var password=YAHOO.util.Dom.get('entity.password').value;
var match=filter.test(password);
return match;
};
//repassword validator
function validatorRePassword(){
var filter=/^s*[A-Za-z0-9]{4,20}s*$/;
var password=YAHOO.util.Dom.get('entity.repassword').value;
var match=filter.test(password);
return match;
};
//is two times password same?
function isPasswordSame(){
var password=YAHOO.util.Dom.get('entity.password').value;
var repassword=YAHOO.util.Dom.get('entity.repassword').value;
if(password!=repassword){
return false;
}else{
return true;
}
}
//email validator;
function validatorEmail(){
var filter=/^([-_A-Za-z0-9\.]+)@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
var email=YAHOO.util.Dom.get('entity.email').value;
var match=filter.test(email);
if(match){
isEmailAvailiable();
}
return match;
}
//when error accous
YAHOO.util.Event.on('entity.username','blur',function(e){
var validatorResult=validatorUserName();
if(!validatorResult){
errorMessageBackgroundColor();
//var usernameDom=YAHOO.util.Dom.get('message');
var errorMessage=YAHOO.util.Dom.get('message');
//var errorMessageText=document.createTextNode('<s:text name="faceye.validator.security.user.username.message"/>');
//errorMessage.appendChild(errorMessageText);
// alert(span.value);
//YAHOO.util.Dom.insertAfter({errorMessage,usernameDom);
// YAHOO.util.Dom.insertAfter('<span id="error-span"><s:text name="faceye.validator.security.user.username.message"/></span>',YAHOO.util.Dom.get('suggest-message'));
errorMessage.innerHTML='<span id="error-span"><s:text name="faceye.validator.security.user.username.message"/></span><br/>';
}else{
suggest();
}
});
YAHOO.util.Event.on('entity.password','blur',function(e){
var v=validatorPassword();
if(!v){
errorMessageBackgroundColor();
var errorMessage=YAHOO.util.Dom.get('message');
errorMessage.innerHTML='<span id="error-span"><s:text name="faceye.validator.security.user.password.message"/></span><br/>';
}else{
suggest();
}
});
YAHOO.util.Event.on('entity.repassword','blur',function(e){
var v=validatorRePassword();
if(!v){
errorMessageBackgroundColor();
var errorMessage=YAHOO.util.Dom.get('message');
errorMessage.innerHTML='<span id="error-span"><s:text name="faceye.validator.security.user.repassword.message"/></span><br/>';
}else{
v=isPasswordSame();
if(!v){
errorMessageBackgroundColor();
var errorMessage=YAHOO.util.Dom.get('message');
errorMessage.innerHTML='<span id="error-span"><s:text name="faceye.validator.security.user.password.notsame"/></span><br/>';
}else{
suggest();
}
}
});
YAHOO.util.Event.on('entity.email','blur',function(e){
var v=validatorEmail();
if(!v){
errorMessageBackgroundColor()
var errorMessage=YAHOO.util.Dom.get('message');
errorMessage.innerHTML='<span id="error-span"><s:text name="faceye.validator.security.user.email"/></span><br/>';
}else{
suggest();
}
});
YAHOO.util.Event.on('form','submit',function(e){
var html='';
if(!validatorUserName()){
html+='<span id="error-span"><s:text name="faceye.validator.security.user.username.message"/></span><br/>';
}
if(!validatorPassword()){
html+='<span id="error-span"><s:text name="faceye.validator.security.user.password.message"/></span><br/>';
}
if(!isPasswordSame()){
html+='<span id="error-span"><s:text name="faceye.validator.security.user.repassword.message"/></span><br/>';
}
if(!validatorEmail()){
html+='<span id="error-span"><s:text name="faceye.validator.security.user.email"/></span><br/>';
}
if(html!=''){
var error=YAHOO.util.Dom.get('message');
error.innerHTML=html;
var errorAttributes= {
color: { to: '#FFFFFF' },
backgroundColor: { to: '#e06' }
};
var errorAnim=new YAHOO.util.ColorAnim('message', errorAttributes);
errorAnim.animate();
return false;
}else{
//YAHOO.util.Dom.get('form').submit();
var username=YAHOO.util.Dom.get('entity.username').value;
var email=YAHOO.util.Dom.get('entity.email').value;
var callback={
success:function(o){
var result=YAHOO.lang.JSON.parse(o.responseText);
if(result.username==='yes' && result.email==='yes'){
YAHOO.util.Dom.get('form').submit();
}else{
var message=YAHOO.util.Dom.get('message');
if(result.username==='no'){
errorMessageBackgroundColor();
if(!YAHOO.util.Dom.get('error-server-side-username')){
message.innerHTML+='<span><s:text name="faceye.security.user.username"/><strong><font color="yellow">'+username+'</font></strong></span><s:text name="faceye.validator.security.user.username.exist"/><br/>';
}
}
if(result.email==='no'){
errorMessageBackgroundColor();
if(!YAHOO.util.Dom.get('error-server-side-email')){
message.innerHTML+='<span id="error-server-side-email"><s:text name="faceye.security.user.email"/><strong><font color="yellow">'+email+'</font></strong></span><s:text name="faceye.validator.security.user.email.exist"/><br/>';
}
}
}
},
failure:function(o){
}
};
var req=YAHOO.util.Connect.asyncRequest('POST', base.path+'security/isUserNameAndEmailAvailable.do', callback,'username='+username+'&email='+email);
return false;
}
});
})();
</script>
<s:form action="saveUser.do" theme="simple" namespace="/security"
method="post" id="form">
<table>
<tr>
<td>
<s:text name="faceye.security.user.username" /><s:text name="faceye.global.redStare"/>
</td>
<td>
<s:textfield name="entity.username" id="entity.username"
required="true" size="40" />
<s:text name="faceye.validator.security.user.username" />
</td>
</tr>
<tr>
<td>
<s:text name="faceye.security.user.password" /><s:text name="faceye.global.redStare"/>
</td>
<td>
<s:password name="entity.password" id="entity.password"
required="true" size="40" />
<s:text name="faceye.validator.security.user.password" />
</td>
</tr>
<tr>
<td>
<s:text name="faceye.security.user.repassword" /><s:text name="faceye.global.redStare"/>
</td>
<td>
<s:password name="entity.repassword" id="entity.repassword"
required="true" size="40" />
</td>
</tr>
<tr>
<td>
<s:text name="faceye.security.user.email" /><s:text name="faceye.global.redStare"/>
</td>
<td>
<s:textfield name="entity.email" id="entity.email" required="true"
size="40" />
<s:text name="faceye.validator.security.user.email" />
</td>
</tr>
<tr>
<td>
<a href="#"><s:text name="faceye.security.regiser.command" />
</a>
</td>
<td>
<s:submit value="%{getText('faceye.security.register.agree')}"
align="center" id="user-register-form-submit" />
</td>
</tr>
</table>
</s:form>
</div>
</div>
运行效果~图: 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-26
yahoo-event-dom.js已经包括了dom-min.js event-min.js了
|
|
| 返回顶楼 | |


![ecsun的博客: [海鹏Blog]--{FaceYe开源} 用户头像](http://www.javaeye.com/upload/logo/user/36668/bcfaff38-8200-4288-88e6-f588c3138e36.gif?1196653519)

