酷!學園

技術討論區 => 網頁技術 => 主題作者是: fell0206 於 2008-10-14 22:27

主題: IE7+conchange()只會檢查一次!
作者: fell02062008-10-14 22:27
各位大大,在JS中,有個onchange事件,但小弟在IE7裡測試,它似乎只能判斷改變一次,不知要怎麼處理?
CODE如下:
<html>
<head>
<title>ck_mail</title>
<script>
function check(input,ID){
  var tag=true;
  var message="";
  var str="";
for(i=0;i<input.length;i++){
  check=document.getElementsByName(input);
  for(var z=0;z<check.length;z++){
        str=check[z].value;
    for(var i=0;i<str.length;i++){
      /*Find ASCII Code 32~47 from str---Start---*/
          for(var j=0;j<=15;j++){
            if(str.charCodeAt(i)==(32+j)){
              tag=false;
                  message="不可輸入非法字元"
                  break;
            }
          }
          /*Find ASCII Code 32~47 from str---End---*/
          /*Find ASCII Code 58~64from str---Start---*/
          for(j=0;j<=6;j++){
            if(str.charCodeAt(i)==(58+j)){
              tag=false;
                  message="不可輸入非法字元"
                  break;
            }
          }
          /*Find ASCII Code 58~64 from str---End---*/
          /*Find ASCII Code 91~96 from str---Start---*/
          for(j=0;j<=5;j++){
            if(str.charCodeAt(i)==(91+j)){
              tag=false;
                  message="不可輸入非法字元"
                  break;
            }
          }
          /*Find ASCII Code 91~96 from str---End---*/
          /*Find ASCII Code 123~126 from str---Start---*/
          for(j=0;j<=3;j++){
            if(str.charCodeAt(i)==(123+j)){
              tag=false;
                  message="不可輸入非法字元"
                  break;
            }
          }
          /*Find ASCII Code 123~126 from str---End---*/
    }
  }
}
  /*Using function match to check string---Start*/
  if(str.match("\\W+")!=null){
        tag=false;
  }
  /*Using function match to check string---End*/
  if(tag==true){
        return tag;
  }else{
    alert(message);
        return tag;
  } 
}
</script>
</head>
<body>
<form method=POST action="" name=TEST>
  <p>
  <input name=T1 size=20 onchange="return check(['T1'])"></p>
  <p><input type=submit value=提交 name=B1><input type=reset value=重新設定 name=B2></p>
</form>
</body>
</html>
請各位大大指點指點~ Thank you!
主題: 回覆: IE7+conchange()只會檢查一次!
作者: micmic32008-10-15 09:08
改 onkeyup
主題: 回覆: IE7+conchange()只會檢查一次!
作者: fell02062008-10-15 20:04
感謝大大的指點!
改成onkeyup還是不行!也只檢查一次而已!!
請大大在指點指點! Thank you~
主題: 回覆: IE7+conchange()只會檢查一次!
作者: Yamaka2008-10-15 21:30
保留原有的, 再加個 onkeypress 試試
主題: 回覆: IE7+conchange()只會檢查一次!
作者: fell02062008-10-16 00:42
感謝各位大大的指點!
小弟在不段的測試中,發現...似乎是document.getElementsByName(input);所產生的問題!只要將這行弄掉,一切就OK了!
請各位大大在指點指點! Thank you~
主題: 回覆: IE7+conchange()只會檢查一次!
作者: fillano2008-10-16 10:34
幫你改成這樣,看看效果是不是你想要的。

代碼: [選擇]
<html>
<head>
<title>ck_mail</title>
<script>
function check(obj){
var tag=true;
var message="";
var str="";
// for(i=0;i<input.length;i++){
str = obj.value;
//  for(var z=0;z<check.length;z++){
//        str=check[z].value;
for(var i=0;i<str.length;i++){
      /*Find ASCII Code 32~47 from str---Start---*/
for(var j=0;j<=15;j++){
if(str.charCodeAt(i)==(32+j)){
tag=false;
message="不可輸入非法字元"
break;
}
}
          /*Find ASCII Code 32~47 from str---End---*/
          /*Find ASCII Code 58~64from str---Start---*/
for(j=0;j<=6;j++){
if(str.charCodeAt(i)==(58+j)){
tag=false;
message="不可輸入非法字元"
break;
}
}
          /*Find ASCII Code 58~64 from str---End---*/
          /*Find ASCII Code 91~96 from str---Start---*/
for(j=0;j<=5;j++){
if(str.charCodeAt(i)==(91+j)){
tag=false;
message="不可輸入非法字元"
break;
}
}
          /*Find ASCII Code 91~96 from str---End---*/
          /*Find ASCII Code 123~126 from str---Start---*/
for(j=0;j<=3;j++){
if(str.charCodeAt(i)==(123+j)){
tag=false;
message="不可輸入非法字元"
break;
}
}
          /*Find ASCII Code 123~126 from str---End---*/
}
//  }
//}
  /*Using function match to check string---Start*/
if(str.match("\\W+")!=null){
tag=false;
}
  /*Using function match to check string---End*/
//alert("oh");
if(tag==true){
return tag;
}else{
alert(message);
obj.value = str.substr(0,str.length-1);
return tag;
}
}
</script>
</head>
<body>
<form method=POST action="" name=TEST>
  <p>
  <input name=T1 size=20 onkeyup="check(this)"></p>
  <p><input type=submit value=提交 name=B1><input type=reset value=重新設定 name=B2></p>
</form>
</body>
</html>