入力フォームのページが表示された時に、特に何も設定していない場合はページ上の最初の要素に見えないフォーカスがあり、すぐには入力できません。キーボードのある端末の場合は、タブキーを押すとリンクや入力欄などに順にフォーカスが移動しますが、何度かキーを押す必要があります。
このページでは、最初に入力する(と予想できる)入力欄に、ページ表示時にフォーカスを移動する方法をご紹介します。
上記ボタンからリンクできるサンプルページでは、始めにある「ダミーフィールド」ではなく、2番目の「キーワード」入力欄にカーソルが移動しています。
基本的な設定方法
入力フォームのあるページの <body> タグに、以下の様に onLoad属性を追加するのが基本的な方法です。「すぐ使えるCGI」製品に限らずこの方法は使えます。
<body onLoad="document.forms[0].keyphrase.focus()">
同じページ内にフォームが複数ある場合は、赤字の「0」 の代わりに「該当フォームの出現の順番 - 1」を設定して下さい。青字の「keyphrase」は、フォーカスしたい入力欄の name属性を指定して下さい。
ファイルを編集したら、サーバに上書きアップロードして動作確認を行って下さい。
未入力の場合のみカーソルを移動したい場合
既存の入力がある場合はカーソルを移動せず、値が空の場合のみ移動させたい場合は、以下のように条件付の設定をして下さい。
<body
onLoad="if (document.forms[0].keyphrase.value=='')
{document.forms[0].keyphrase.focus();}">
$(document).ready という記載がある場合
ページ内に「$(document).ready」という記載がある場合は、<body> タグに直接 onLoad 属性を指定してしまうとうまくいきません。ページ内検索をしてこの記載があったら、フォーカスの指定は下記の場所に設定して下さい。
$(document).ready(function(){
/* ここに何か書いてある筈 */
/* 以下のように追加 */
document.forms[0].keyphrase.focus();
/* または */
if (document.forms[0].keyphrase.value=='')
{document.forms[0].keyphrase.focus();}
});
「すぐ使えるCMS」での設定
入力画面のタイトル欄にフォーカス
「すぐ使えるCMS」の入力画面で、入力フォーム表示時にタイトル欄にフォーカスするには templats/admin/2.html に下記の様に追加して下さい。
<body onload="hide_format();document.forms[0].subject.focus();">
ログイン画面のユーザ名欄にフォーカス
「すぐ使えるCMS」のログイン画面で、ページ表示時にユーザ名欄にフォーカスするには templats/admin/6.html に下記の様に追加して下さい。
<body onLoad="document.forms[0].admin_name.focus();">