未入力欄にフォーカス
(手順)
(1)全入力フィールドを、getElementsByTagName("input")メソッドで取得する。
(2)各フィールドの値をvalueプロパティによってチェックする。
(3)空の場合はfocus()メソッドを使ってフォーカスを当てる。
function check()
{
var inp = document.getElementsByTagName("input");
for(var i=0; i
エンターキー無効
テキスト入力中にエンターキーを押すと、(日本語入力中は確定後にエンターキーを押す)、大抵のブラウザではフォームを送信します。
フォームの入力を終える前に誤って送信してしまうことのないように、エンターキーが送られてもそれを無視するようにします。
function blockEnter(evt) {
evt = (evt) ? evt : event;
var charCode = (evt.charCode) ? evt.charCode :
((evt.which) ? evt.which : evt.keyCode);
if (charCode == 13) {
return false;
} else {
return true;
}
}
フォーカス移動
上記「エンターキー無効」のコードの応用例。
エンターキーを押した時に次のフィールドにフォーカスを移動します。
全てのテキスト入力フィールドのonkeypressイベントから当関数を呼び出し、その時に次の入力フィールド名を指定します。
formタグ中では、onsubmit="return false"を使って全ての送信をブロックします。
function focusNext(form, elemName, evt) {
evt = (evt) ? evt : event;
var charCode = (evt.charCode) ? evt.charCode :
((evt.which) ? evt.which : evt.keyCode);
if (charCode == 13) {
form.elements[elemName].focus();
return false;
}
return true;
}
タブ移動
クレジットカード番号入力のように、各々4文字を4つの部分に分けて入力する際、自動的にタブ移動します。
function autofocus(field, limit, next, evt) {
evt = (evt) ? evt : event;
var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
((evt.which) ? evt.which : 0));
if (charCode > 31 && field.value.length == limit) {
field.form.elements[next].focus();
}
}