2

たとえば、テキストエリアを持つ HTML フォーム要素と、子要素として 2 つのボタンがあります。フォーカスがこれらの 3 つの要素の 1 つから、それらの 3 つの要素以外の要素に移動したことをどのように検出できますか。言い換えれば、フォーカスがフォームから離れたことをどのように検出して、自動的に閉じることができるのでしょうか?

フォームの focusout イベントを使用して、フォーカスがその子要素のいずれかに属しなくなった時期を把握できると考えましたが、フォーカスを取得するオブジェクトに focusout イベントからアクセスできないように見えるため、方法がありませんたとえば、フォーカスがテキストエリアからボタンの 1 つに移動しているかどうかを確認します。

relatedObject、fromElement、および toElement プロパティはすべて未定義です。

4

2 に答える 2

-1

正しい名前は「ぼかし」

function setBlur()
{
   var elements = document.getElementByTagName('input');
   for(var i = 0; i < elements.length; i++)
      elements[i].setAttribute('onfocus', 'callme(this)');
}
function callme(el)
{
   var _id = el.getAttribute('id');
   if(_id != "textarea_id' && _id != "button_1_id" && _id != "button_2_id")
        callYourMethodToHandleFocusOutsideYourForm();
}
body.onload = function() { setBlur(); }

これはトリックを行います

document.getElementByTagname('textarea')テキストエリアに対しても、配列を適用してループするだけで実行できます。

于 2011-08-09T21:03:23.823 に答える