3

我的代码如下:

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

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

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

4

5 回答 5

0

使用onBlur()而不是onchange().

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

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

请查看此以了解事件

于 2013-03-08T11:54:27.997 回答
0

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

我认为这可以通过 html5

onselect
于 2013-03-08T11:46:37.287 回答
0

没有带有 id 的元素run,它被以下引用:

document.getElementById("run");

你可能打算写:

<input type="text" name="run" id="run"/>
于 2013-03-08T11:48:23.027 回答
0

尝试使用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 -->

于 2014-12-13T04:44:17.543 回答
0

尝试这个 :

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

于 2021-11-16T09:38:24.240 回答