作者 主題: IE7+conchange()只會檢查一次!  (閱讀 4769 次)

0 會員 與 1 訪客 正在閱讀本文。

fell0206

  • 活潑的大學生
  • ***
  • 文章數: 339
    • 檢視個人資料
IE7+conchange()只會檢查一次!
« 於: 2008-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!

micmic3

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
回覆: IE7+conchange()只會檢查一次!
« 回覆 #1 於: 2008-10-15 09:08 »
改 onkeyup

fell0206

  • 活潑的大學生
  • ***
  • 文章數: 339
    • 檢視個人資料
回覆: IE7+conchange()只會檢查一次!
« 回覆 #2 於: 2008-10-15 20:04 »
感謝大大的指點!
改成onkeyup還是不行!也只檢查一次而已!!
請大大在指點指點! Thank you~

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
回覆: IE7+conchange()只會檢查一次!
« 回覆 #3 於: 2008-10-15 21:30 »
保留原有的, 再加個 onkeypress 試試

fell0206

  • 活潑的大學生
  • ***
  • 文章數: 339
    • 檢視個人資料
回覆: IE7+conchange()只會檢查一次!
« 回覆 #4 於: 2008-10-16 00:42 »
感謝各位大大的指點!
小弟在不段的測試中,發現...似乎是document.getElementsByName(input);所產生的問題!只要將這行弄掉,一切就OK了!
請各位大大在指點指點! Thank you~

fillano

  • 鑽研的研究生
  • *****
  • 文章數: 526
    • 檢視個人資料
回覆: IE7+conchange()只會檢查一次!
« 回覆 #5 於: 2008-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>
Sapere aude! Habe Mut, dich deines eigenen Verstandes zu bedienen! ist also der Wahlspruch der Aufklärung.