繁体   English   中英

在下拉列表中 onchange 事件

[英]In Dropdown list onchange event

我的代码如下:

<!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>

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

但问题是当我在下拉列表中选择第一个值时,自动选项卡正在工作,我再次从下拉列表中选择相同的值(自动选项卡不起作用)。 我知道问题出在事件上。 没有变化,所以事件不会触发。 请帮我纠正这个问题。

尝试使用onBlur()它会解决问题

我认为这可以用 html5

onselect

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

document.getElementById("run");

你可能打算写:

<input type="text" name="run" id="run"/>

使用onBlur()而不是onchange()

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

onChange事件仅在您更改字段的值时调用。

请查看此内容以了解事件

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

 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 -->

尝试这个 :

 <!DOCTYPE html> <html> <body> <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" id="run" /> <script type="text/javascript"> function tab() { current = document.getElementById("test"); next = document.getElementById("run"); if (current.value != "-1") { next.focus(); next.value = current.options[current.selectedIndex].text; } else { next.value = ""; } } </script> </body> </html>

暂无
暂无

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

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