HTMLの[Enter]でフォーカス移動
むかしはねぇ。業務系アプリのほとんどで、入力枠で[Enter]押されたら、次の入力枠にフォーカスを移すのって、当たり前でしたよね。
ところがどっこい。HTMLでの[Enter]は submit() がデフォルトになってる。
業務系WEBアプリとしては、[Enter]キーでフォーカス移動は、ユーザーからのご要望も強くありますね。
と、いうことで。
[Enter]キーでのsubmit()をフォーカス移動にしてたのが、次のコードです。
textarea に移動しない!と思った人は変更してくださいw
$(function(){
$("input").on("keydown", function(e) {
if ((e.which && e.which !== 13) && (e.keyCode && e.keyCode !== 13))
{
return true;
}
else
{
var count = $('input').length;
var current_index = $('input').index(this);
for(let index = current_index; index < count; index++)
{
var next_input = $('input')[index + 1];
var is_hidden = $(next_input).is(':hidden');
var is_readonly = $(next_input).prop('readonly');
var is_button = $(next_input).is(':button');
if(is_hidden || is_readonly || is_button)
{
continue;
}
$(next_input).focus();
return false;
}
$('input')[current_index].blur();
return false;
}
});
}(this));
MacOSの[かな]キーでフォーカス移動してしまう!
Mac 使いのお客様から、こんなクレームが来ました!
フォーカスが移動する、ってのなら上記コードが原因のわけです。
と、いうことで。
MacOS 機を入手して動きを調べてみました。
「かな」キーの keyCode が 13 !!!
なんでこんなことしてんですかねーw
数字(と記号の)郵便番号入力から、住所欄の入力に移動して「かな」キーを押すと、住所欄すっ飛ばして「名前」のところにジャンプしてしまうわけですw
『使えねぇ』と思われても仕方ありません。ええ。
keydown を keypress に
この部分を
$("input").on("keydown", function(e) {
に変更することで、対応できました。
$("input").on("keypress", function(e) {
まとめ
ちなみに、「かな」キーのkeydownでのkeyCode は 13 でしたが、 keypress での keyCode は 229 が入ってきます。
HTMLって日本語のことちっとも考えてくれてないよね。
IE にあった、IME の制御機能、入れてほしいよね・・・
とりあえず動いた。
めでたしめでたし。
0 件のコメント:
コメントを投稿