Web ページに HTML 電卓があります。私がやろうとしているのは、input
フィールドを選択し、番号付きdiv
の要素をクリックして値を入力することですが、 をクリックしたinput
後div
、 にフォーカスが移りますdiv
。jQueryを使用してこれを防ぐにはどうすればよいですか。
次のフィドルでは、入力要素をクリックして値を入力しようとすると、フォーカスが離れることがわかります! これを修正して、関連する値を入力フィールドに記録するにはどうすればよいですか?
これが非常に遅いことはわかっていますが、他の誰かがこの回答を見に来たら役立つかもしれません.
@anil が言ったように、フォーカスされた入力を保存できる変数を作成します。次に、入力に集中したら、要素を変数に格納します。「キーパッド」をクリックすると、値が取得され、フォーカスされた変数の入力値に追加されます。
これが、元のフィドルから分岐した私のフィドルです。
これはコードです:
var focused;
// Stored the input
$('input').focus(function() {
focused = $(this);
});
// Listen for clicks on the number button
$('.num-button').click(function(){
// Get the value of the number button that was clicked as string
var intVal = $(this).find('span').text().toString();
// Make sure that we have a focused input
if(typeof focused != 'null' || typeof focused != 'undefined') {
// Only add numbers to the input field
if(intVal != "DONE" && intVal != "Del") {
// Get the values as strings
var curVal = focused.val().toString(),
newVal = curVal + intVal;
focused.val(newVal);
} else if (intVal == "Del") {
// Clear the value if the Del "key" was clicked.
focused.val('');
}
}
});