文字列(複数行)の行数カウントについて助けてほしい

キントーン初心者です。

文字列(複数行)の行数カウントをしたいと思い、他の投稿を参考させていただき、

なんとか見様見真似で作成しております。

以下のコードで動くことは動くのですが、未入力の際に保存ができません。

また、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 ファイルの中身を

お知らせいただければ、何か分かるかもしれません。

文系男 様

 

アプリをコピーして新しく作成したら出来ました!!

色々いじり過ぎて自分でもよくわからなくなっていたので、リセットしてやり直してみます!

大変勉強になりました。ありがとうございました!!