- function checkusername(id) {
- errormessage(id);
- var username = trim($(id).value);
- if($('tip_' + id).parentNode.className.match(/ p_right/) && (username == '' || username == lastusername)) {
- return;
- } else {
- lastusername = username;
- }
- if(username.match(/<|"/ig)) {
- errormessage(id, '用户名包含敏感字符');
- return;
- }
- var unlen = username.replace(/[^\x00-\xff]/g, "**").length;
- if(unlen < 3 || unlen > 15) {
- errormessage(id, unlen < 3 ? '用户名不得小于 3 个字符' : '用户名不得超过 15 个字符');
- return;
- }
- var x = new Ajax();
- $('tip_' + id).parentNode.className = $('tip_' + id).parentNode.className.replace(/ p_right/, '');
- x.get('forum.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checkusername&username=' + (BROWSER.ie && document.charset == 'utf-8' ? encodeURIComponent(username) : username.replace(/%/g, '%25')), function(s) {
- errormessage(id, s);
- });
- }
复制代码 这是DZX3.0rc版的检查用户名js函数,当用户名存在#字符时,非IE浏览器下就会存在长度检查问题,如以ab#123注册时,ajax是以get方式请求:/forum.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checkusername&username=ad#123,这时用户名就成ad了,#是锚点,用户名长度就是2。dzx2/2.5/3.0rc都存在此问题。临时解决方法:此函数里的- if(username.match(/<|"/ig))
复制代码 修改为- if(username.match(/<|"|#/ig))
复制代码 |