課題はjQuery.blur()。focus()イベント
質問
い形状の複数入力します。ユーザがクリックすると入力フィールド、隠れた部表示一部のタイプから選択する分野、そして選べるオプションは、このセットそのものがフィールド値となる。
現在、同部が隠れる場合、ユーザーを選択します。この作品が何があった場合にはないオプションを選択し、divん削除されます。なので、私の溶液を使用ぼかしイベントを入力の上、情報-電子系、生命系、環境系が隠div要素になります。こうすることで、ユーザーがタブのフォームを通じて、隠された部、隠れ場となって残ることになり、そのような分野でこれが正しく動作します。
の問題が生じた時にいいをクリックからの記入欄に入力します。めいしょもうしても火災の場合、ユーザがクリックのオプション事業部、事実を隠す部若干の目の前にユーザがクリック及びその追加なし、入力ます。
池尾:そういうふうに考えていうことがあります。したいと思っているブラーイベントを非表示にしdivが必要であり何らかの例外は、ユーザがいをクリック内部のブラーイベントな非表示にすdivセスしようとしている場合、そのクリックします。
のです。
解決
blurイベントにタイムアウトを設定し、「help div」を非表示にできます。別の入力フィールドにフォーカスがある場合のみ、すぐに。
次のようなもの:
$("#input1").focus(function() {
hideAllHelpers(); $("#helper1").show();
});
$("#input1").blur(function() {
window.setTimeout(function() { $("#helper1").hide(); },2000); });
});
$("#input2").focus(function() {
hideAllHelpers(); $("#helper2").show();
});
// etc...
もちろん、これをより一般的なものにし、微調整を使用することもできますが、アイデアは得られます...
他のヒント
Onblur、対応する div
を非表示にする前に1秒待機するタイムアウトを設定します。次に、onclickでタイムアウトをクリアします。これが基本的な例です...
// Namespace for timer
var myPage = {
timer: null
}
// Blur event for textbox
.blur(function() {
myPage.timer = setTimeout(function() {
// Hide the div
}, 1000);
});
// Click event for DIV
.click(function() {
clearTimeout(myPage.timer);
// Fill in the textbox
$(this).hide();
});
い入れの追加ボタンとタブストップ直後のこの分野です。この問題を解決ユーザーとして捉えられるべきだと思い知らのシークレット(タブが通行可能な実現方法はありますので任のダイアログなしを選択のオプションです。
mousedownイベントを使用します。これは、ユーザーがヘルパー要素をクリックしたときに、入力要素でblurイベントがトリガーされる前にトリガーします。
$('#input').blur(function () {
$('#helper').hide();
});
$('#helper').mousedown(function () {
console.log('This executed before the blur event');
});