キントーン初心者です。
文字列(複数行)の行数カウントをしたいと思い、他の投稿を参考させていただき、
なんとか見様見真似で作成しております。
以下のコードで動くことは動くのですが、未入力の際に保存ができません。
また、10行を超えるとエラーが出るようにするにはどうすればいいでしょうか。
本当に初心者で困っております。なんとか助けていただけませんでしょうか?!
kintone.events.on([‘app.record.create.submit’,‘app.record.edit.submit’,‘app.record.index.edit.submit’], function (event) {
// 本文に入力された文字数を取得
var rec = event.record;
var st = rec[‘textbox’][‘value’]
var result = 1;
//改行を1文字でカウント
for (var i = 0; i < st.length; i++) {
if (st.charAt(i) === “”) {
result+=1;
}
}
//文字数フィールドに文字数を代入
rec[‘counterText’][‘value’] = result;
return event;
});
石田さん
こんにちは!
textboxフィールドに何も入力されていない場合に保存できないのは、
値がないため、length(文字数) が取れず、参照エラーとなっていると思われます。
なので、処理を “textboxフィールドに値が入力されていれば行う” ようにすればよいです。
また、event オブジェクトの errorプロパティに文字列を設定してあげることで、
eventを返す際に画面上部にエラーを出せます!
上記についても、“result が 10 よりも大きい場合” という条件で処理させるとよいです!
以下、少しいじってみた処理になります。
参考になれば嬉しいです^^
kintone.events.on(['app.record.create.submit','app.record.edit.submit','app.record.index.edit.submit'], function (event) {
// 本文に入力された文字数を取得
var rec = event.record;
var st = rec['textbox']['value']
var result = 1;
//textboxフィールドの値の有無を判定
if(st) {
//改行を1文字でカウント
for (var i = 0; i < st.length; i++) {
if (st.charAt(i) === "") {
result+=1;
}
}
}
//文字数フィールドに文字数を代入
rec['counterText']['value'] = result;
//行数が10よりも多い場合に eventオブジェクトの errorプロパティにメッセージを代入
if(result > 10) {
event.error = "10行を超えてます。";
}
return event;
});
文系男様
早速ご返信いただきありがとうございます。
未入力でも無事に保存できました!!
ただ、10行を超えてもエラーがでず、保存できました。
どこが原因でしょうか。。ちなみに、他にカスタマイズ等は入れておりません。
よろしくお願いいたします。
石田さん
こんにちは!
私の環境では、改行コード “” が 11個以上の場合はエラーとなるので、動作の確認方法が違う、
もしくは正常に処理が行われない何かがあると思われます。
今回、 の数を改行数としており、文字を連続で入力してフィールド上で折り返されても “” は存在しないので、
保存できる状態となります。
ご留意ください。
動作確認の画面キャプチャか操作手順、適用している JavaScript ファイルの中身を
お知らせいただければ、何か分かるかもしれません。
文系男 様
アプリをコピーして新しく作成したら出来ました!!
色々いじり過ぎて自分でもよくわからなくなっていたので、リセットしてやり直してみます!
大変勉強になりました。ありがとうございました!!