0

我已经从这个页面编译了两个用于文本字段和下拉菜单的代码。该代码正在工作,只是在转到另一个字段后它会不停地来回跳跃。我猜我的问题一定在某个地方的循环中,但找不到。提前致谢!演示

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