Firefox赢得了't在keydown处理程序中设置input.value..但它在调试时起作用
Firefox won't set input.value in keydown handler... but it works while debugging?
现在已经是深夜了,我落后于截止日期,我正在努力解决一个对我来说非常奇怪的问题。也许这是我明显错过的东西,因为我累了,但我不知道。。。无论如何,这是我的测试用例:
<!doctype html>
<html>
<head>
<script type="text/javascript">
function NoEsc(e)
{
e = e||window.event;
var k = e.keyCode||e.which;
if (k!=27) return true;
var s = e.target||e.srcElement;
s.value = "ESCAPE PRESSED!";
//alert("It works when this alert is shown!");
return false;
}
</script>
</head>
<body onload="document.getElementById('in1').onkeydown=NoEsc;">
<input type="text" id="in1" value="ORIGINAL VALUE">
</body>
</html>
这个想法是,在我的页面上,按ESC不会重置整个表单,只会重置有焦点的元素。对于上面的测试用例,我只是让ESC手动将输入元素中的文本设置为"ESCAPE PRESSED!",然后取消keydown事件。
在IE(v9)中,这是完美的。然而,在Firefox(v14.0.1)中,当在输入中按下ESC时,不会发生任何事情但是如果我取消对alert
行的注释,或者如果我在s.value = "ESCAPE PRESSED!"
语句之前在FireBug中设置了一个断点,那么它就可以完美地工作。
我已经为此工作了一两个小时,现在我厌恶地举起双手,把问题发布在这里。我不知道为什么它不起作用。
有人能帮我吗?我错过了什么显而易见的东西吗?谢谢
我自己今天也遇到了这个问题(ff v16.0.2@winxp)。尤其是在ESC时,将(脚本设置值)重置为上一个(用户输入的)值时。玩这个游戏时,我注意到TAB来回切换会在脚本集字符串中烘焙。毫无疑问,以下(到目前为止)似乎是一个不错的解决方法:
s.value = "ESCAPE PRESSED!";
s.blur(); // tab out
s.focus(); // tab right back in
return false;
很奇怪。(这肯定是个错误。)
干杯!
相关文章:
- 如何设置html元素填充的动画
- Firefox赢得了't在keydown处理程序中设置input.value..但它在调试时起作用
- jquery:$(input).keydown无法在单选按钮上设置处理程序,同样的代码也适用于文本
- 如何在 sap ui5 的文本字段中设置自动完成或自动建议,例如 sap.m.Input
- HTML5 input=time 不会通过 javascript 设置
- 如何使用 JavaScript 以编程方式设置 input:focus 样式
- jQuery 设置 input.value = input.title(或其他输入属性)
- 我想要Ember.js'{{input value=“searchTerm”}}以将其值设置为''
- 删除Parent Div以在不设置样式的情况下正确显示Form Input Element
- 通过单击SELECT选项,将文本INPUT元素的VALUE动态设置为默认值
- 设置input的值而不是sendKeys()-Selenium WebDriver nodejs
- 在Symfony中使用JQuery设置Input OnSubmit的值
- 如何使用html input required属性将一组输入设置为required ?
- 无法在引导中更改输入框的大小,默认设置为input-sm
- 将Input Value属性设置为带有空格的变量
- Angular指令ng-repeat input设置焦点为使用add按钮添加的新选项
- 设置& lt; input>通过jquery (selector).prop()函数对动态html不起作用
- 如何将光标设置到Internet Explorer中文本INPUT字段的字符串值中的特定位置
- 使用javascript将input标记的值设置为另一个值
- 如何防止预先设置的INPUT值被更改?