gpt4 book ai didi

javascript toUpperCase 在 Firefox 中不起作用

转载 作者:行者123 更新时间:2023-12-02 19:28:25 25 4
gpt4 key购买 nike

目前我正在尝试在 javascript 方法中强制文本框中的大写字母。此方法设置为在“按键”事件上调用以进入文本框。

这是我通过 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)'>

关于javascript toUpperCase 在 Firefox 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11783982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com