在下拉列表中的onchange事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在下拉列表中的onchange事件相关的知识,希望对你有一定的参考价值。

我的代码如下:

<!DOCTYPE html>
<html>
<body>
    <script>    
        function tab()
        {
            current=document.getElementById("test");
            next=document.getElementById("run");
            if(current.value!="-1")
            {
                next.focus()
            }
        }
    </script>
    <select id="test" onchange="tab()">
        <option value="-1">--select--</option>
        <option value="1" >TEST</option>
        <option value="2">RUN</option>
    </select>
    <input type="text" name="run"/>
</body>
</html>

定义:我有下拉列表,它有四个值。如果我在下拉列表中将一个值更改为另一个值,则会自动选择文本框。根据我的代码,它工作正常。

但问题是当我在下拉列表中选择第一个值时,autotab正在工作,我再次从下拉列表中选择相同的值(autotab不工作)。我知道这个问题就在于此。没有变化,所以事件不会发生。请帮我纠正这个问题。

答案

没有id为run的元素,它被引用:

document.getElementById("run");

你可能打算写:

<input type="text" name="run" id="run"/>
另一答案

使用onBlur()而不是onchange()

当您离开某个对象而不必更改其值时,会触发onBlur事件。

仅当您更改了字段的值时才会调用onChange事件。

请了解一下qazxsw poi

另一答案

尝试使用eventsmouseup事件作为解决方法:

keyup
var current = document.getElementById("test");
var next = document.getElementById("run");
var open = false; //drop-down closed

var watchOpen = function() {
  open = !open; //inverse flag to identify state of drop-down
};

var tab = function() {
  if (!open && current.value !== "-1") {
    next.focus();
  }
};
另一答案

尝试使用<select id="test" onmouseup="watchOpen();tab();" onkeyup="watchOpen();tab();"> <option value="-1">--select--</option> <option value="1">TEST</option> <option value="2">RUN</option> </select> <input type="text" id="run" /><!-- replaced name with id -->。它将解决问题

我认为这可以用html5

onBlur()

以上是关于在下拉列表中的onchange事件的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式更改值时触发 Dojo Select onChange 事件

如何使用第一个下拉列表的 onChange 事件填充另一个下拉列表?

如何在 IOS 6.0(Iphone) 中通过 jquery 为混合应用程序关闭选择器的 onchange 事件下拉列表

AJAX 在页面加载之前运行 onchange 事件

使用 setattribute 选择下拉列表的值时未触发 Onchange 事件

选择下拉列表项而不触发 onchange 事件?