$("#abc").keydown(function(){
return false;
})
上面这行代码在opera10下面居然没起作用,其它浏览器都可以。onkeydown在opera下没办法阻止浏览器默认行为吗??
本来是为了在input输入框只能输入数字,就用了onkeydown,结果opera10下不起作用
<input type="text" value="" id="a"/>
<script type="text/javascript">
if(window.attachEvent){
$("a").attachEvent("onkeydown",checknum)
}else{
$("a").addEventListener("keydown",checknum,false);}
function checknum(e){
if((e.keyCode>47 && e.keyCode<58) || (e.keyCode>95 && e.keyCode<106) || e.keyCode == 8){
//do some thing
}
else{
if (e.preventDefault) {
e.preventDefault();
} else {
window.event.returnValue = false;
}
}
}
function $(id){
return document.getElementById(id) || id;
}
</script>
很纠结,查了很久,发现网上也有人遇到这种问题,后来有人建议用onkeypress代替。试了下,onkeypress貌似还真的可以,不过有些地方需要注意的,不同浏览器捕获onkeypress事件时有些不一样。具体参考了下这位哥哥的博文:http://quicker.iteye.com/blog/586646
可是这keycode就和原来的不一样了怎么办呢,后来看到了这篇文章:
I am trying to validate textbox for numeric entry, while I added this code to accomplish in page_load event:
textbox.Attributes.Add("onkeypress", "return (window.event.keyCode == 45 || window.event.keyCode == 13 || window.event.keyCode == 8 || window.event.keyCode == 9 || window.event.keyCode == 189 || window.event.keyCode == 109 || (window.event.keyCode >= 48 && window.event.keyCode <= 58) )");
It worked fine in IE7 and IE8, but it didnt work for FF though. A bit googling gave me conclusion that FF doest recognize window.event.keyCode.Basically Firefox supports the which property instead of the keyCode property IE does. By checking which (window.event.which) of them exists with an if statement we can reliably get the key that was pressed.
I replaced above code with:
textBox.Attributes.Add("onkeypress", "var key; if(window.event){ key = event.keyCode;}else if(event.which){ key = event.which;} return (key == 45 || key == 13 || key == 8 || key == 9 || key == 189 || (key >= 48 && key <= 58) )");
onkeypress无法区分小键盘,所以checknum改了下
function checknum(e){
var key;
if(window.event){
key = event.keyCode;
}else{
key = e.which;
}
if((key>47 && key<58)|| key == 8){
console.log(key)
}
else{
if (e.preventDefault) {
e.preventDefault();
} else {
window.event.returnValue = false;
}
}
}
还有点问题,在ie,firefox下面可以设置input样式 ime-mode:disabled; 而其它的浏览器不支持这个样式,所以在切换语言到中文或其它语言的时候,比如搜狗拼音,输入中文拼音的时候再按shift或space键,则字母或汉字就可以出现在input里面。这时只能加一个方法了。我这里加了一个onkeyup,就替换input的值。
$("a").attachEvent("keyup",replacenum);
或
$("a").addEventListener("keyup",replacenum,false);
function replacenum(){
this.value = this.value.replace(/[^\d]/g,'');
}
本以为这样应该ok了吧,opera居然在输入中文按下shift或space时屏蔽了keyup事件。很无语啊。看来又得为opera单独弄个方法了,想来想去没找到个好方法,就用setInterval在input获得焦点时每隔50毫秒去检测input的值,然后进行替换。失去焦点时再clearInterval.
最后再给input加上onpaste="return false;"防止粘贴。
相关推荐
onkeypress、onkeydown和onkeyup事件的区别 onkeypress、onkeydown和onkeyup是三种常用的JavaScript事件,都是与键盘输入相关的事件,但它们之间存在着一些细微的区别。 首先,让我们来看一下这三个事件的触发顺序...
在JavaScript中,`onkeyup`、`onkeydown`和`onkeypress`是三种与键盘交互相关的事件,它们各自有着特定的用途和响应时机。理解这三个事件的区别对于开发交互式网页应用至关重要。 首先,`onkeydown`事件会在用户按...
### JavaScript中的键盘和鼠标事件 #### 键盘事件 在Web开发中,`keydown`、`keyup` 和 `keypress` 是JavaScript中常见的键盘事件。了解它们的触发顺序和特性对于创建交互式网页非常有帮助。 ...
onKeyPress onKeyUp onLoad onMouseDown onMouseMove onMouseOut onMouseOver onMouseUp onMove onReset onResize onSelect onSubmit onUnload 第十章 LiveWire 数据库服务 本章包含了服务器端与 LiveWire 关联的...
浅析OnKeyPress事件和OnKeyDown、OnKeyUp事件
本文将深入探讨`OnKeyDown`、`OnKeyUp`和`OnKeyPress`这三个JavaScript键盘事件,以及如何使用键码(key codes)来识别用户按下或释放的特定按键。 `OnKeyDown`事件是在用户按下键盘上的一个键时触发,不论该键是否...
JavaScript中的`onkeypress`和`onkeydown`是两种常见的键盘事件,它们在处理用户与页面交互时起到关键作用。理解这两个事件的区别对于创建响应式的Web应用程序至关重要。 首先,`onkeydown`事件会在用户按下键盘上...
- OnKeyDown和OnKeyUp事件:分别在按键按下和释放时触发,可以获取按键的虚拟码和按键状态,如Shift、Ctrl和Alt键的状态。 - OnMouseDown、OnMouseUp和OnMouseMove事件:与鼠标操作相关,如按下、释放鼠标按钮或...
JS 键盘事件可以分为三种类型:keydown、keypress 和 keyup,它们分别对应 onkeydown、onkeypress 和 onkeyup 这三个事件句柄。在这三个事件类型中,keydown 和 keyup 比较底层,而 keypress 比较高级。 浏览器的...
* Added OnEnter, OnExit, OnKeyDown, OnKeyPress and OnKeyUp events in arc controls * Added OnSetTextFromValue and OnSetValueFromText events in the TsTrackEdit component * Added OnDropDown and ...
在 JavaScript 中,我们可以使用 onkeydown、onkeyup、onkeypress 等事件处理程序来捕获键盘事件。 二、如何使用 JavaScript 操作键盘的 Enter 事件? 要使用 JavaScript 操作键盘的 Enter 事件,需要使用 ...
键盘事件包含onkeydown、onkeypress和onkeyup这三个事件 事件初始化 function keyDown(){} [removed] = keyDown; //论按下键盘上的哪个键,都将调用KeyDown()函数。 DOM标准下 function keyDown(e) { var ...
对于其他主流浏览器,在onkeydown/onkeyup事件中,通过altKey、ctrlKey、shiftKey这些属性可以检测到这些功能键的状态。 总结来说,JavaScript中的按键检测涉及到对键盘事件的理解,对keyCode和charCode属性的掌握...
8. onKeyPress、onKeyDown 和 onKeyUp:这些是键盘事件,与鼠标事件不同但密切相关。onKeyPress在键被按下并释放时触发,onKeyDown在按键被按下时触发,onKeyUp则在按键被释放时触发。需要注意的是,这些事件需要...
本篇文章将详细介绍`onkeypress`、`onkeyup`和`onkeydown`这三个事件。 #### 二、`onkeypress`事件 `onkeypress`事件会在用户按下并释放一个字母或数字键时触发。此事件不支持系统键(例如箭头键和功能键)。`...
用js实现键盘记录,要关注浏览器的三种按键事件类型,即keydown,keypress和keyup,它们分别对应onkeydown、onkeypress和onkeyup这三个事件句柄。一个典型的按键会产生所有这三种事件,依次是keydown,keypress,...
键盘事件包括onKeyPress、onKeyDown、onKeyUp等。表单事件包括onChange、onFocus、onBlur、onSelect、onSubmit、onReset等。页面事件包括onLoad、onUnload、onError、onMove、onResize、onScroll等。 行为面板 在...
`OnKeyDown`、`OnKeyPress`和`OnKeyUp`是TWinControl类(及其派生类)中用于处理键盘事件的主要方法。以下是这些事件的详细说明: 1. **OnKeyDown** 事件:当用户按下键盘上的任意键时触发,不论是否产生ASCII字符...