Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未触发OnChange事件_Javascript - Fatal编程技术网

Javascript 未触发OnChange事件

Javascript 未触发OnChange事件,javascript,Javascript,我试图通过在键up上附加以下函数来实现在用户键入时转换为大写 function ChangeCharCase(evt,obj,upper) { if(obj.value != obj.value.toUpperCase()) obj.value = obj.value.toUpperCase(); return true; } 在我将on change事件附加到输入文本之前,这似乎工作得很好,我发现在IE 11和chrome上根本不会触发on

我试图通过在键up上附加以下函数来实现在用户键入时转换为大写

function ChangeCharCase(evt,obj,upper)

{
    if(obj.value != obj.value.toUpperCase()) 
                obj.value = obj.value.toUpperCase();
    return true;
}
在我将on change事件附加到输入文本之前,这似乎工作得很好,我发现在IE 11和chrome上根本不会触发on change事件。在Firefox上,这似乎没什么问题

你可以在这里查一下这个箱子

您将看到,在上面提到的浏览器上,onchange事件永远不会在第一次输入文本时触发

有人知道为什么吗

如何正确实现字符大小写转换?
我不能在这里设置css,因为我确实希望更改值,而不仅仅是为了显示

我个人使用onkeyup或onblur代替onchange作为文本框。也许你可以试一试。

@Update 这是一个概述


“当元素的选择、选中状态或内容发生更改时发生。在某些情况下,仅当元素失去焦点时才会发生。”

类似问题:@Rgraham,在向上键事件中手动触发事件不是解决方案,因为每次按键时都会触发onchange事件。
onchange
是在
blur
之后触发的(不是每次按键之后),您需要使用
oninput
进行实时转换。或者简单地使用CSS仅以大写形式显示输入值。@Kai为什么会出现这样的问题?您是否在每次按键时都调用
onkeyup
?@RGraham,在正常情况下,onchange事件将在焦点丢失时触发,而不是在每次按键时触发。这实际上是一个主要问题,因为我正在使用ASP.NET webForm。我不想让我的文本框在每次按键时都导致回发。输入错误,我在做onkeyup。OnBlur在这里不是一个选项,因为我想在键入时进行转换,而不是在最后。@Kai我想Omer的观点是Chrome/IE只在模糊后触发onchange。因此,一个键控/模糊组合的功能将完全相同。Hey Kai,我使用的是Chrome,事件触发器很好。我在Windows8.1上使用Chrome36和IE11@你说得对,忘了提了。@Omer,我在7号窗口使用chrome 36和IE 11。我不确定这会有什么不同。