当サイトでは感想類の類だと’【】 ‘という文字列が記事タイトルの最初に必ず入っています。これを毎回手入力するのは面倒なので、なるべく楽できるような編集ボタンを作ってみました。つまりはNucleusで編集ボタン追加の応用編です。
まず前提として、Nucluesの編集画面のタイトル部分と本文部分は説明のために不要な部分を除けば下記のようなプロパティを持っています。メソッドによって id を指定するか name を指定するか違いますので要注意です。
//タイトル部分 <input name="title" id="inputtitle"/> //本文部分 <textarea name="body" id="inputbody"></textarea>
PAGEFACTORY.phpで指定するための関数を、 edit.js ファイルの中に任意の名前で作ります。今回は下記のような内容にしました。
function kansoThis() { document.getElementById('inputtitle').value = '【】 ' + document.getElementById('inputtitle').value ; document.forms[0].body.focus() document.forms[0].title.focus() }
document.getElementById() メソッドではid指定を行い、focus() メソッドでは name 指定を行うのに注意すれば問題ないと思います。
こうすれば必ずタイトル部分の行頭に’【】 ‘という文字列が追加されます。そのあとどこにフォーカスがあっても大丈夫なようにいったん body にフォーカスを強制的に移した後に title にフォーカスを最終的に移すようにしています。こうしないとフォーカスがタイトル部分にある場合、テキストカーソルが一番前でなく後ろに来てしまうからです。
もしフォーカスのある任意のテキストフィールドに文字列を追加させたいのであれば、上記の getElementById でのカッコ内部分を「 ‘inputtitle’ 」から「 ‘input’ + nonie_FormType 」に変えればいいです。”の位置や有無に注意してください。
document.getElementById('inputtitle').value ↓ document.getElementById('input' + nonie_FormType).value
現状はカーソル位置が一番左に来ているのですが、ここから一つだけ右に自動移動させられたら完璧なのに、可能かどうかすら分からなかったので頓挫中。VBなら簡単にできるんでJavaスクリプトで出来ないことはなかろうとは思うんですが、メソッドなどが見当たらなくて困りました。
まぁある程度動いてるので現状で満足することにします。
コメント
反証事例はないんですけれど、調べた感じではどうも
Javaスクリプトではカーソル位置関連に対する操作が
出来なさそうな感じですね。
謎仕様。