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 つの値を持つドロップダウンがあります。ドロップダウンである値を別の値に変更すると、テキストボックスに自動移動します。私のコードによると、正常に動作しています。

しかし、問題は、ドロップダウンで最初の値を選択すると、autotab が機能し、ドロップダウンから同じ値を再度選択することです (autotab は機能しません)。問題はイベントにあることはわかっています。変更がないため、イベントは発生しません。問題を修正するのを手伝ってください。

4

5 に答える 5

0

使用してみてくださいonBlur()。それは問題を解決します

これはhtml5で可能だと思います

onselect
于 2013-03-08T11:46:37.287 に答える
0

onBlur()の代わりに使用しonchange()ます。

このonBlurイベントは、必ずしも値を変更せずにオブジェクトから離れたときに発生します。

このonChangeイベントは、フィールドの値を変更した場合にのみ呼び出されます。

イベントについて知るためにこれを見てください

于 2013-03-08T11:54:27.997 に答える
0

によって参照されているidrunを持つ要素はありません:

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 に答える