繁体   English   中英

onchange不起作用

[英]onchange isn't working

我正在通过O'Reilly媒体出版的Head First系列丛书学习JavaScript,并且我刚刚进入了必须使用onchange事件的一章。

我正在使用Safari / OS X Lion,Firefox,Chrome,Opera和IE / Windows进行测试,但是得到了相同的结果。

鉴于此代码:

<html>
    <head>
        <title>onChange Test</title>
        <script type="text/javascript">
            function itWorks(){
                alert("it works!");   
            }
        </script>
    </head>
    <body>
        <form>
            <input type="text" onchange="itWorks();" />
            <input type="text" onchange="itWorks();" />
        </form>
    </body>
<html>

onchange事件在我们从一个字段更改为另一个字段时是否起作用,是否仅通过单击或使用TAB键将其激活是正确的吗?

onchange事件在以下时间触发:

  • 焦点离开领域
  • 如果自获得焦点后价值发生了变化

失去焦点的方式无关紧要,也不必将焦点移到另一个字段(可以将链接聚焦,或者文档中没有任何内容,等等)。

“我们通过单击或使用TAB键从一个字段更改为另一个字段”-

多数民众赞成在模糊。

每当您更改输入值时,您编码的事件都会触发,然后离开该字段。 EG:在字段中输入内容,然后按TAB键。

您的示例代码对我来说是预期的。

您描述的行为是关注焦点。 onchange在输入值更改时执行。 如果您在字段中键入内容,它应该运行。

“请澄清一下,只要我们通过单击或使用TAB键将其从一个字段更改为另一个字段,onchange事件就会起作用,对吗?”

是的 - 只要价值发生变化

我不确定问题是什么-您的代码有效! 我在jsfiddle.net进行了测试 -非常适合学习/测试javascript。

(你应该关闭你的html标签顺便说一下)......

这就是HTML5草案规范所说的

不重点的步骤如下:

如果元素是一个输入元素,并且更改事件适用于该元素,并且该元素没有已定义的激活行为,并且该用户已更改该元素的值或其所选文件的列表,而控件是在未提交的情况下进行的更改,然后触发一个简单事件,在该元素上冒泡名为change的事件。

使元素散焦。

在元素上触发一个名为blur的简单事件。

请注意, 更改也可以在其他时间触发。 规范还说

...每当用户提交对元素值或所选文件列表的更改时,用户代理必须对任务进行排队,以触发一个简单的事件,该事件将命名的气泡更改为输入元素。

继续提供几个“做出改变”的例子

具有提交操作的用户界面的示例将是文件上载控件,其由单个按钮组成,其打开文件选择对话框:当对话框关闭时,如果文件选择因此而改变,则用户具有提交了一个新的文件选择。

具有提交操作的用户界面的另一个示例是Date控件,它允许从下拉日历中进行基于文本的用户输入和用户选择:虽然文本输入可能没有显式提交步骤,但从drop中选择日期日历,然后关闭下拉菜单将是一个提交操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM