function validUserAcount(obj){
var this_obj = obj;
var username = this_obj.value;
//合法的字符
var valid_char = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_'
for (i=0;i<=username.length;i++) {
     var the_char=username.charAt(i)
     if(valid_char.indexOf(the_char)==-1){
       alert('社区帐号不合法!社区帐号只能是数字、字母!')
       this_obj.value=username.substring(0,i)
       return 1
     }
   }
if(this_obj.value!=username) this_obj.value=username}

解决方案 »

  1.   

    老兄,我说的是用正则表达式,而且没你那么长,很短,只需要写在onkeyup事件里就可以了
      

  2.   

    <FORM METHOD=POST ACTION="">
    有关正则表达式
    1.只能输入数字和英文的:
    <input onkeyup="value=value.replace(/[\W]/g,'')"
    onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">
    2.只能输入数字的:
    <input onkeyup="value=value.replace(/[^\d]/g,'')"
    onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">
    3.只能输入全角的:
    <input onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))">
    4.只能输入汉字的:
    <input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))">
    <INPUT TYPE="submit">
    </FORM>