Redmineでチケットの作成や編集を行っている最中、題名などテキストボックスで間違えてエンターキーを押すと送信されてしまうことがありますよね。
もうストレスMAXでハゲ散らかしそうな勢いです。プロジェクトが終わるのが早いか、坊主になるのが早いかの戦いは避けらそうにないため、毛髪を守るために今回はテキストボックスでエンターキーが押されても送信されないようカスタマイズを行います。
ここではView Customizeプラグインを利用して実装します。インストール方法などは以下の記事をご覧ください。
設定する
パスのパターン
チケットを編集するタイミングは大きく2種類あり、それぞれのパスは次のようになります。
- 新規作成
- /projects/.*/issues/new
- 編集
- /issues/[0-9]{1,}
というわけで最終的に以下のようなパターンを入力します。ちょっと分かりづらいかなw
- /(projects/.*/issues/new|issues/)
プロジェクトのパターン、挿入位置、種別
- 「プロジェクトのパターン」
- 要件に合う物を設定してください。
- 「挿入位置」
- 全ページのヘッダ
- 「種別」
- JavaScript
コード
コード欄には以下のようなJavaScriptを入力します。もしカスタムフィールドなどを追加している場合など、テキストボックスが他にもある場合はidlist
配列にidを追加します。
$(document).ready(function(){
// 対象のテキストボックス一覧
const idlist = [
"#issue_subject", // 題名
"#issue_parent_issue_id", // 親チケット
"#issue_estimated_hours" // 予定工数
];
// エンターキーを押してもSubmitしない
$(idlist.join(",")).keypress(function(e){
if( e.which === 13 ){
return(false);
}
});
});
keypress
でキーが押された場合の処理を定義、e.which
で押されたキーを参照しています(13番はエンターキー)。false
をreturnで返すとSubmitイベントがキャンセルされます。
このブログを応援する
お寄せいただいたお気持ちは全額サーバ代や次の記事を執筆するための原資として活用させていただいております。この記事が参考になった場合などぜひご検討ください。