在下拉列表中的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
尝试使用events和mouseup
事件作为解决方法:
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 事件下拉列表