0

テキスト フィールドとドロップダウン メニュー用に、このページから 2 つのコードをコンパイルしました。コードは、別のフィールドに移動した後、ノンストップで前後にジャンプすることを除いて機能しています。私の問題はどこかでループしているに違いないと推測していますが、それを見つけることができません。前もって感謝します!デモ

function doThisOnBlur() {   
      if (this.value==='') {   var ths = $(this);  setTimeout(function(){
         ths.focus();
        }, 1);  return false; }

}

var inputs = document.getElementsByTagName('input');
var selects = document.getElementsByTagName('select');

for (var i = 0; i < inputs.length; i++)
{ inputs[i].onblur = doThisOnBlur; }
for (i = 0; i < selects.length; i++)
{  selects[i].onblur = doThisOnBlur; }
4

1 に答える 1

1

さて、あなたの jsfiddle に基づいて動作すると思われる変更を加えました。null または現在アクティブなフィールドを保持するようにグローバル変数を設定しました。アクティブなフィールドが値を取得すると、変数は null に戻され、ユーザーは次のフィールドに進むことができます。

var hasPrecedence = null;

function doThisOnBlur() {
  if(!hasPrecedence){ hasPrecedence = this; }
  if(hasPrecedence != this){ return; }
  if (this.value==='') {   var ths = $(this);  setTimeout(function(){ 
     ths.focus();
  }, 1);  return false; }
  else{
    hasPrecedence = null;
  }
}

</p>

于 2012-12-21T21:14:06.453 に答える