動的に作成されたテキスト ボックスのリストを持つ ASP.NET 4.5 ページがあります。
asp.panel のデフォルト ボタンを [保存] ボタンに設定しました。
ユーザーがテキスト ボックスへの入力の途中で Enter キーを押すと、フォームは保存されますが、フォーカスはページの上部に戻ります。編集中の最後のテキスト ボックスにフォーカスを戻すにはどうすればよいですか?
javascript/jquery を介してすべてのフォーム要素に onfocus ハンドラーを追加できます。これにより、現在フォーカスされているコントロールの ID が非表示フィールドに保存され、ドキュメントの読み込み時に JavaScript を使用するときにその ID 値が読み取られるため、適切なコントロールにフォーカスを設定できます。
例:
<asp:HiddenField runat="server" ID="hfFocusedControl" />
<script>
$(document).ready(function(){
var id = $('#hfFocusedControl').val()
;
$('#'+id).focus();
$('input').focus(saveIdOnFocus);
});
var saveIdOnFocus = function(e){
var control = $(this)
, id = control.attr('id')
;
$('#hfFocusedControl').val(id);
}
</script>