JavaScript - обнаружение, когда ни один из двух входов не имеет фокуса - PullRequest
0 голосов
/ 22 сентября 2009

Я хочу, чтобы определенная функция вызывалась, когда ни один из двух входов на странице не имеет фокуса. Если пользователь просто переключается с одного входа на другой, я не хочу, чтобы эта функция вызывалась. Есть идеи?

Ответы [ 2 ]

1 голос
/ 22 сентября 2009

попробуйте (отредактировано):

<input type="text" onfocus="doFocus(1)" onblur="doBlur(1)"/>
<input type="text" onfocus="doFocus(2)" onblur="doBlur(2)"/>

<script>
var fstate=[]; // focus state
fstate[1] = false;
fstate[2] = false;

function doit() { alert('lost focus'); }

function doBlur(i) {
  fstate[i]=false;
  // give some time to the other element to receive focus
  // because the onblur event gets fired before the onfocus
  setTimeout("if (!fstate[1] && !fstate[2]) doit();",50);  
}

function doFocus(i) { fstate[i]=true; }
</script>
0 голосов
/ 22 сентября 2009

Попробуйте это:

<input type="text" Id="Text1" onfocus="InTextbox()" onblur="OutOfTextBox()"/>
<input type="text" id="Text2" onfocus="InTextbox()" onblur="OutOfTextBox()"/>


<script>
var inTextBox=false;
function InTextBox()
{
    inTextBox=true;
}
function OutOfTextBox()
{
    inTextBox=false;
}

function YourFunction()
{
   if(inTextBox) return; //one of the textboxes has focus so return
   .......
}
</script>

Переменная inTextBox устанавливается в значение true, когда текстовое поле фокусируется, и устанавливается в значение false, если оно теряет фокус.

...