想請問 Javascript 中關於 string test 的問題, 程式如下 :
代碼:
<html>
<head>
<script language="javascript">
function dat_check()
{
var invalid_ascii = /[^\x30-\x39]/g;
if(document.show_form.dat_name.value != "")
{
if(invalid_ascii.test(document.show_form.dat_name.value) == true)
alert("fail");
else
alert("pass");
}
}
</script>
</head>
<body>
<form name="show_form">
<input type="text" name="dat_name" value="">
<input type="button" name="btn_submit" value="ok" onclick="dat_check()">
</form>
</body>
</html>
這是測試使用者輸入的內容是否為數字(0~9),
是的話顯示 pass, 否則顯示 fail.
測試環境 windows xp, firefox 3.6.28, ie6
firefox :
輸入數字, 動作正常, 會顯示 pass, 但是輸入非數字, 假設輸入一個 a,
之後按 ok -> 顯示 fail, 再按 ok -> 顯示 pass, 再按 ok -> 顯示 fail..,
如此循環.
ie :
輸入數字, 動作正常, 會顯示 pass, 輸入非數字, 動作正常, 會顯示 fail.
如果把 /[^\x30-\x39]/g 改成 /[^\x30-\x39]/ 則就完全正常.
請問這是 firefox 還是 ie 的問題阿.
另外請問一下, 在網路上查到說 g 表示全域比對, 但是都沒有更近一步的
說明, 有人有更詳細的說明嗎, 謝謝.