javascript toUpperCase在firefox中不起作用
javascript toUpperCase not working in firefox
当前我正在尝试在javascript方法中的文本框中强制使用大写字母。此方法设置为在"keypress"事件中调用以进入文本框。
这是我的方法,改变为大写与IE和FF检测。
//some code to detect the kind of key pressed based on numeric value,
//if lowercase detected then continue
var key;
if(window.event){ //working IE code
//key = window.event.keyCode;
window.event.keyCode-=32;
}
else if(e){ //broken FF code
key = String.fromCharCode(keycode).toUpperCase()
e.value = e.value.toUpperCase();
}
当前的代码表示e.value在firebug中未定义。如果我只尝试e.toUpperCase(),firebug会说toUpperCase不存在。我已尝试将e.value设置为"key",它不会返回错误,但不会更改为大写。我尝试过直接更改e.which,但当然,它是只读的,并返回一个错误。
我到底错过了什么?我相信问题在于,无论我在这里更改了什么,e.which仍然被设置为小写值,因为我无法以任何方式编辑它,所以原始的小写e.which字符被推到了文本框中。
我想我会用另一种方式:
function keypressHandler() {
this.value = this.value.toUpperCase();
}
document.getElementById('whatever').onkeypress = keypressHandler;
// or use addEventListener or whatever
编辑实际上,它与以下黑客合作效果更好:
function keypressHandler(event) {
var inp = this;
setTimeout(function() {
inp.value = inp.value.toUpperCase();
}, 0);
}
这样就可以在值"固定"之前将导致事件的键添加到值中。
关键是,处理键盘事件非常混乱,而且浏览器之间的情况也不尽相同。上面的方法完全通过直接处理由浏览器维护的值来避免这种情况。
编辑—注意,为了让这里的代码工作,必须按照代码的方式设置事件处理程序。如果您在HTML标记的"onkeypress"属性中设置它,它必须是不同的:
<input onkeypress='keypressHandler.call(this)'>
KeyEvents没有value
属性。您可能想要使用这个片段来检测按键,也可能想要阅读有关检测击键的内容。
还要注意,事件属性(通常)是只读的。您需要防止当前事件用不同的键触发一个额外的事件。
要将<input>
元素中键入的所有内容都大写,不需要更改键事件。只需在字符出现后更改输入本身的值。为此,您需要监听keyup
而不是keypress
事件(请阅读原因):
inputEl.onkeyup = function(e) {
this.value = this.value.toUpperCase();
};
(jsfiddle.net上的演示)。它很简单,适用于所有浏览器,唯一的缺点是当你按住一个键插入多个字符时,它不会立即大写(解决方法)。
- 为什么javascript:void(0)在Firefox中不起作用
- jpm的默认Firefox路径没有'不起作用
- 设置 CSS 背景在 Firefox 中不起作用
- document.getElementById 在 Firefox 中不起作用
- firefox中的CSS动画不起作用
- event.stopPropagation()在firefox javascript中不起作用
- 复选框.onClick在firefox中不起作用
- window.close();在Chrome和Firefox中不起作用
- JQuery在Chrome中不起作用,但Firefox很好
- 选择“行在 Chrome 和 Firefox 中不起作用(生成的代码)”
- Javascript 按键事件在 Firefox 中不起作用
- window.dispatchEvent 在 Firefox、Safari 或 IE 中不起作用
- 更改 Angular 2 中选择的事件在 Firefox 和 Edge 中不起作用
- jQuery SlideToggle() 在 FireFox 中不起作用,在 Chrome 中工作
- 动态关键帧插入在 IE 或 Firefox 上不起作用
- 使用 nameProp 的 JQuery 图像滚动更新在 Firefox 和 Chrome 中不起作用
- Javascript键码在Firefox中不起作用,但在chrome中运行良好
- HTML5<视频>元素在Firefox、Opera和Safari中不起作用
- 输入类型的图像在Internet Explorer中不起作用,但在Chrome和Firefox中起作用
- Ajax 提交表单不起作用 Firefox