2016-10-02 28 views
-4

私はフォーカスを得るときにクリアされる入力の古典的なケースを持っています。Javascript:ウィンドウがフォーカスされているときに入力にフォーカスを当てるのを防ぐにはどうすればよいですか?

問題は、ユーザーがスプレッドシートからデータをコピーする場合などです。このデータを入力に追加すると、入力のフォーカスイベントがトリガーされ、入力されたものがすべてクリアされます。

ブラウザウィンドウのフォーカスによるもので、入力、タブ、ラベルのクリック、またはページ内の従来のアクションをクリックしたときにonfocusがトリガーされないようにするにはどうすればよいですか?

NO JQUERY PLEASE。

編集: OKポストにコードがないたびに否定的に投票する人もいるようです。あなたはこの単純なアイデアを把握するためのコードが必要なのであれば、ここにある:

​​
+2

なぜデータが焦点にクリアされますか? – adeneo

+0

あなたのコードはどこですか? – j08691

+0

どのように誰も見えないコードで動作を修正できますか? [mcve] – charlietfl

答えて

1

技術的には、ウィンドウを切り替えると、要素がフォーカスを取り戻す/失わせるん。これは、もちろん、focusイベントハンドラをトリガします。フォーカスイベントが発生した原因を区別する方法はありません。

あなたはそれを手動で選択されている場合にのみ、フィールドをクリアしたい場合は、代わりにclickイベントを使用します。

<input type=text onclick="this.value=''"> 

ページがフォーカスを失った場合は、検出することができます。フォーカスを取り戻したときにinputをクリアするかどうかを推測するために、これを使用することは可能かもしれません。イベントの順序が問題なのか、イベントの順序が関係するブラウザに基づいて異なるのか分かりません。

<input type=text> 
donotclear = false; 

addEventListener('blur',function(e){ 
    donotclear = true; 
}); 

document.getElementsByTagName('input')[0].addEventListener('focus',function(e){ 
    if(donotclear) { 
    donotclear = false; 
    } else { 
    this.value = ''; 
    } 
}); 
+0

前述のように、onclickは多くの問題をもたらします:1.入力はタブまたはラベルで選択できます。 2。カーソルを移動することもクリックです。 – FlorianB

+0

@FlorianB – Ouroborus

+0

更新ありがとう、私はその解決策について考えた、それはおそらく最も汚れているだろう:)私は入力がフォーカスを取得し、我々が戻ってくるときを検出しようとしないときdonotclear = falseを設定するアイデアが好きウィンドウに移動してタイムアウトを設定する – FlorianB

関連する問題