Redmineでチケットの作成や編集を行っている最中、題名などテキストボックスで間違えてエンターキーを押すと送信されてしまうことがありますよね。
もうストレスMAXでハゲ散らかしそうな勢いです。プロジェクトが終わるのが早いか、坊主になるのが早いかの戦いは避けらそうにないため、毛髪を守るために今回はテキストボックスでエンターキーが押されても送信されないようカスタマイズを行います。
ここではView Customizeプラグインを利用して実装します。インストール方法などは以下の記事をご覧ください。 blog.katsubemakito.net
設定する
パスのパターン
チケットを編集するタイミングは大きく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イベントがキャンセルされます。