kintone初心者です。フィールドに環境依存を入力できないようにしたいのですが上手くいきません。1文字であれば入力エラーを出せたのですが全行書くのも困難です。 以前投稿されていたものを参考にしましたが(置き換えるもの)そのままコピペしても動作しませんでした。今は以下コードを作成しましたが正常保存されてしまいます。
フィールドに環境依存文字(または指定した複数の文字のうち1つでも入力されて場合にエラーにする)にはどのうにすればよいのでしょうか? 可能であればアプリすべてのフィールドに適用したいです。
(() => {
'use strict';
kintone.events.on('app.record.create.submit', event => {
const record = event.record;
let ngchr = [
'①','②','③','④','⑤','⑥','⑦','⑧','⑨','⑩','⑪','⑫','⑬','⑭','⑮',
'⑯','⑰','⑱','⑲','⑳','Ⅰ','Ⅱ','Ⅲ','Ⅳ','Ⅴ','Ⅵ','Ⅶ','Ⅷ','Ⅸ','Ⅹ',
'㍉','㌔','㌢','㍍','㌘','㌧','㌃','㌶','㍑','㍗','㌍','㌦','㌣','㌫','㍊','㌻',
'㎜','㎝','㎞','㎎','㎏','㏄','㎡','㍻',
'〝','〟','№','㏍','℡','㊤','㊥','㊦','㊧','㊨','㈱','㈲','㈹','㍾','㍽','㍼',
];
if (record.text1.value === ngchr ) {
record.text1.error = '入力禁止文字が使用されています';
event.error = '入力禁止文字が使用されています。';
}
return event;
});
})();
2件のコメント
初心者とのことで、プラグイン等が提供されているようなので、そちらを検討されるのも良いのではないでしょうか。とはいえほとんどが文字列(1行)のみの対応になっていますね(changeイベントにしているためでしょうか)。フィールドごとに設定が必要なので大変かもしれません。
自力でカスタマイズされる場合、
この部分を見る限り、配列の理解から必要な気がします(このコードをそのまま受け取ると「text1がチェックボックスや複数選択フィールドで『①~㍼』まで全て選択されている場合」という意味になります)。こういった時は正規表現とmatch()を使うと良いかと思います。
興味が出たので当方でも作ってみましたが、流れとしては
①全てのフィールドに適応させるのであれば、Object.keys(event.record)を使うと簡単で、今後フィールドを追加してもカスタマイズは不要です。
②単純にレコードに対してエラーを出すだけであればレコード全体をJSON.stringify()でmatchさせればいい気がしますが、フィールドに対してエラーを出すのであれば、Object.keys(event.record)のループ処理でフィールドのタイプを参照して、サブテーブルの場合だけ行ごとのループ処理をし、行内のフィールドごとにmatchをさせていくことになります。
③どの文字がエラーになっているかを表示させるのであれば、matchでマッチした文字が取れるので、これをフィールドのエラーに組み込むと良いかもしれません。
このあたりがポイントになると思います。
ご回答ありがとうございます。職場での導入になるのですがまだkintone自体の理解が進んでおらず予算的に多くのプラグインが使用できない状況で(無料プラグインは使わせていただいています)、まず自作して職場の理解と利用人数を増やしたのちにプラグインを購入できればと考えています
まずはご教授いただいた内容でチャレンジしたいと思いますので今後ともよろしくお願いいたします