8
24
2008
1

[javascript]文本框强制输入数字

<script language="javascript">
function myKeyDown(e){
        if(window.event){//IE
                var k = e.keyCode;
                if ((k == 13)||(k == 9) || (k == 35) || (k == 36) || (k == 8) || (k == 46) || (k >= 48 && k <=57 )||( k >= 96 && k <= 105)||(k >= 37 && k <= 40)){
                }else{
                        window.event.returnValue = false;
                }
        }else{//火狐
                var k = e.which;
                if ((k == 13)||(k == 9) || (k == 35) || (k == 36) || (k == 8) || (k == 46) || ( k>= 48 && k <= 57)||(k >= 96 && k <= 105)||(k >= 37 && k <= 40)){
                }else{
                        e.preventDefault();
                }
        }
}
</script>

<input style="ime-mode:disabled" maxlength="10" onkeydown="myKeyDown(event);"/>

style="ime-mode:disabled" 禁止切换输入法

附上keycode表

字母和数字键的键码值(keyCode)
按键 键码 按键 键码 按键 键码 按键 键码

A

65 J 74 S 83 1 49
B 66 K 75 T 84 2 50
C 67 L 76 U 85 3 51
D 68 M 77 V 86 4 52
E 69 N 78 W 87 5 53
F 70 O 79 X 88 6 54
G 71 P 80 Y 89 7 55
H 72 Q 81 Z 90 8 56
I 73 R 82 0 48 9 57

    

数字键盘上的键的键码值(keyCode) 功能键键码值(keyCode)
按键 键码 按键 键码 按键 键码 按键 键码

0

96 8 104 F1 112 F7 118
1 97 9 105 F2 113 F8 119
2 98 * 106 F3 114 F9 120
3 99 + 107 F4 115 F10 121
4 100 Enter 108 F5 116 F11 122
5 101 - 109 F6 117 F12 123
6 102

  .

110            
7

  103

/ 111         

    

控制键键码值(keyCode)
按键 键码 按键 键码 按键 键码 按键 键码
BackSpace 8 Esc 27 Right Arrow 39 -_ 189
Tab 9 Spacebar 32 Down Arrow 40 .> 190
Clear 12 Page Up 33 Insert 45 /? 191
Enter 13 Page Down 34 Delete 46 `~ 192
Shift 16 End 35 Num Lock 144 [{ 219
Control 17 Home 36 ;: 186 \| 220
Alt 18 Left Arrow 37 =+ 187 ]} 221
Cape Lock 20 Up Arrow 38 ,< 188 '" 222

Category: JavaScript | Tags: javascript
8
5
2008
0

[JavaScript]IE不支持getElementsByName的解决方法

今天做一个页面,一直在firefox上面测试,等到终于完工了,想起到IE上跑一遍试试

一跑问题就出来了

找到原因问题出在getElementsByName这个方法上

IE无法使用getElementsByName只能用getElementsByTagName

于是只好加上了一个方法

function getElementsByName(tag,eltname){
    var elts=document.getElementsByTagName(tag);
    var count=0;
    var elements=[];
    for(var i=0;i<elts.length;i++){
        if(elts[i].getAttribute("name")==eltname){
            elements[count++]=elts[i];
        }
    }
    return elements;
}

还好改动不是特别大  加上这个方法就解决问题了
(改掉原先使用document.getElementsByName的地方为getElementsByName)

还是有点怪怪的

Category: JavaScript | Tags: javascript
7
24
2008
2

[JavaScript]一个全局变量不能用的问题

今天写了一段JavaScript的代码让我很奇怪

<html>
<head>
<script language="javascript">
var userName = document.getElementById('username');
function foo(){
    alert(userName.value);
    return false;
}
</script>
</head>
<body>
<form action="a.php" method="POST" onsubmit="return foo();">
<input type="text" name='username' id='username' />
<input type="submit" value="提交">
</form>
</body>
</html>

点击提交时应该弹出userName的值,但这段代码弹的值却是null

查了半天谷歌终于找到了原因

"放在对应的id后面就可以了。虽然你的userName 是全局变量,但是如果你放在获取dom的前面的话,获得到的值就是null。"

恍然大悟,于是把代码修改了一下 将script代码放到了</body>下面,马上可以用了,ie,FireFox都没问题

<html>
<head>
</head>
<body>
<form action="a.php" method="POST" onsubmit="return foo();">
<input type="text" name='username' id='username' />
<input type="submit" value="提交">
</form>
</body>
<script language="javascript">
var userName = document.getElementById('username');
function foo(){
    alert(userName.value);
    return false;
}
</script>
</html>

那个人还有一个建议"但做法还是建议在执行操作时临时获得对象,如果放在body后面的话对资源是浪费的。"

这句话我还需要理解理解,呵呵,毕竟还是JavaScript的新手嘛

Category: JavaScript | Tags: javascript 全局变量

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com