はじめに
タスク管理やToDoなど、担当者を1名しか選べないように制御したいときはないでしょうか?
しかし、kintoneの標準機能では、基本的にユーザー選択フィールドは複数のユーザーを選択できてしまいます(´д`ι)
こんなときは、JavaScriptカスタマイズで解決していきましょう!
今回は、「ユーザーを1名のみ登録できる」カスタマイズを紹介いたします。
アプリの準備
それでは、今回利用するアプリを準備しましょう~
※ユーザー選択フィールド以外のフィールドの配置は任意です。
フィールド名 | フィールドタイプ | フィールドコード |
担当者 |
ユーザー選択 |
ユーザー選択 |
ポイント
ソースコードを書く前に、次のポイントを確認しましょう。
- レコード編集画面、レコード追加画面、一覧編集画面でレコードを編集できるので、次のイベントをすべて指定することを忘れないでください。
- 2名以上指定した時に制御をします。ユーザー選択フィールドの配列の長さが2以上の場合、event.errorにエラーメッセージを代入します。(ソースコード8行と10行目参照)
ソースコード
動作確認
このソースコードを先ほど準備したアプリに適用します。
レコード追加画面、レコード編集画面、レコード一覧編集画面でそれぞれ、二人以上の担当者を指定して保存してみましょう。
エラーメッセージが出てきましたね♪
いかがでしょうか。
簡単にできましたねヾ(≧▽≦)ノ゙ゥキャキャ☆
ソースコードのところに何も記載されていないのですが、どうすればサンプルコードを見ることができるのでしょうか。
山口 大介 様
お世話になっております。
cybozu developer networkチームです。
こちら手元で確認すると、ちゃんと表示されていました。
念のため、ブラウザのキャッシュを消して、もう一度リロードしてみていただますでしょうか。
お手数おかけしますが、よろしくお願いいたします。
ソースコードをコピーしてフィールド名を実際のアプリのフィールド名に変更しただけなのですが、保存ボタンを押しても反応がなく動作しません。
どこに原因があるか教えていただけませんでしょうか?
よろしくお願いいたします。
※以下実装したソース
(function() {
"use strict";
var myEvent = ["app.record.create.submit", "app.record.edit.submit", "app.record.index.edit.submit"];
kintone.events.on(myEvent, function(event) {
//ユーザー情報を取得する
var record = event.record;
var selectedUsers = record['訪問社員']['value'];
if (selectedUsers.length > 1) {
//一人以上の指定の場合は、errorプロパティにメッセージを代入する
event.error = "担当者は一人しか指定できません。";
}
return event;
});
})();
javascriptファイルの文字コードが「UTF-8」になっていないかったのが原因でした。
失礼いたしました。
javascriptのご紹介ありがとうございます!
こちらでうまく制限がかけられました!!
スマホ版も同様に制限をかけたいのですが、
そちらもコードをご紹介いただけると助かります。
mk 様
こちらのページで モバイル用JavaScriptイベントを調べていただき、
ソースコード3行目に追記した上で、JavaScript ファイルを、PC 用とスマートフォン用両方の欄にアップロードすると動作すると思います。
こちらの記事も参考にしてください。
なおこのコメント欄は記事のフィードバックの目的ですので、個別の技術的な質問はコミュニティを活用ください。