文字列複数行を表示すると

  お世話になっております。

 

チェックボックスで’A’が選択されているときのみテーブルを表示したく以下のコードを書きました。しかし、表示・非表示は出来るのですが表示したときにテーブルの中の文字列(複数行)が下の画像のように文字が入力できない状態で表示されてしまいます。

(チェックボックスの初期値は何も選択されてない状態です)

コードの書き方に問題があるのか、ご教示いただけますと幸いです。

 

  kintone.events.on([

        ‘app.record.create.show’,

        ‘app.record.edit.show’,

        ‘app.record.create.change.チェックボックス’,

        ‘app.record.edit.change.チェックボックス’,

    ], function (event) {

        var record = event.record;

        kintone.app.record.setFieldShown(‘テーブル’, true);

        if (record[‘フォロー対応手段’][‘value’].indexOf(‘A’) == -1) {

            kintone.app.record.setFieldShown(‘テーブル’, false);

        }

        return event;

    });

 

 

y.ikeda さん

change イベントに設定している ‘チェックボックス’ と処理内の ‘フォロー対応手段’ は同一のものと認識していますが合ってます?

認識があってる前提で記述しているソースコードを自分の環境で動かすと表示・非表示の切り替え可能でした。

ほかに動作させてる処理とかないです?

ある場合は、それの記述もお願いして大丈夫でしょうか?

また、記述している処理に現時点で出てないフィールドがある場合は、フィールドの種類とかもお願いします。

しぶい様

 

ご確認いただきまして、有難う御座います。

情報に誤りがあり大変失礼いたしました。仰る通りchange イベントに設定している ‘チェックボックス’ と処理内の ‘フォロー対応手段’ は同一のものです。

今回、該当のコード部分のみ抜粋しておりましたのでソース全体を以下に記載致します。(上の投稿から内容を一部修正しております)

他の処理が影響しているのでしょうか。例えば「el.style.display = ‘none’;」の部分が影響しているかなど。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

(function ($) {

    “use strict”;

    // 最初から非活性とする

    kintone.events.on([

        ‘app.record.create.show’,

        ‘app.record.edit.show’,

    ], function (event) {

        var record = event.record;

        record[‘選択肢’][‘disabled’] = true;

        record[‘連絡先_電話番号’][‘disabled’] = true;

        return event;

    });

    /**

     *  下記3項目の表示非表示

     *  ・フォロー対応手段

     *  ・連絡先

     *  ・連絡先電話番号

     */

    kintone.events.on([

        ‘app.record.create.show’,

        ‘app.record.edit.show’,

        // チェックボックスをチェックした場合、発動

        ‘app.record.create.change.フォロー対応手段’,

        ‘app.record.edit.change.フォロー対応手段’,

        ‘app.record.create.change.連絡先’,

        ‘app.record.edit.change.連絡先’,

    ], function (event) {

        var record = event.record;

        var followMeans = record[‘フォロー対応手段’][‘value’];

        // フォロー対応手段に「不要」が含まれている場合、他のチェックを外し、連絡先・連絡先_電話番号を非表示にする

        if (followMeans.indexOf(‘不要’) > -1) {

            record[‘フォロー対応手段’][‘value’] = [‘不要’];

            record[‘連絡先’][‘value’] = ‘架電不要’;

            record[‘連絡先_電話番号’][‘value’] = ‘’;

            kintone.app.record.setFieldShown(‘連絡先’, false);

            kintone.app.record.setFieldShown(‘連絡先_電話番号’, false);

        } else {

            // 電話が選択されている場合は、連絡先を表示

            if (followMeans.indexOf(‘電話’) > -1) {

                kintone.app.record.setFieldShown(‘連絡先’, true);

                kintone.app.record.setFieldShown(‘連絡先_電話番号’, true);

                let changeElement = (el) => {

                    if (el.style.display == ‘’) {

                        el.style.display = ‘none’; // 電話選択していないときは、非表示

                    } else {

                        el.style.display = ‘’;

                    }

                }

            } else {

                record[‘連絡先’][‘value’] = ‘架電不要’;

                kintone.app.record.setFieldShown(‘連絡先’, false);

                kintone.app.record.setFieldShown(‘連絡先_電話番号’, false);

            }

        }

        // 架電不要の場合は、連絡先_電話番号を非表示にする

        if (record[‘連絡先’][‘value’] == ‘架電不要’) {

            kintone.app.record.setFieldShown(‘連絡先_電話番号’, false);

        }

        return event;

    });

    /**

     * 病院紹介有無によって病院紹介情報テーブル表示/非表示

     */

    kintone.events.on([

        ‘app.record.create.show’,

        ‘app.record.edit.show’,

        ‘app.record.create.change.病院紹介有無’,

        ‘app.record.edit.change.病院紹介有無’,

    ], function (event) {

        var record = event.record;

        if (record[‘病院紹介有無’][‘value’] == ‘なし’) {

            kintone.app.record.setFieldShown(‘病院紹介情報’, false);

        } else {

            kintone.app.record.setFieldShown(‘病院紹介情報’, true);

        }

        return event;

    });

    /**

     * フォロー対応手段で「SMS」が選択されているかどうかによって、SMS送信履歴テーブル表示/非表示

     */    

    kintone.events.on([

        ‘app.record.create.show’,

        ‘app.record.edit.show’,

        ‘app.record.create.change.フォロー対応手段’,

        ‘app.record.edit.change.フォロー対応手段’,

        ‘app.record.create.change.SMS送信区分’,

        ‘app.record.edit.change.SMS送信区分’,

        ‘app.record.index.edit.change.SMS送信区分’,

    ], function (event) {

        var record = event.record;

        var table = record[‘SMS送信履歴’].value ;

        kintone.app.record.setFieldShown(‘SMS送信履歴’, false);

        if (record[‘フォロー対応手段’][‘value’].indexOf(‘SMS’) != -1) { 

            kintone.app.record.setFieldShown(‘SMS送信履歴’, true);

            switch (table[0].value[‘SMS送信区分’].value){

            case “1ヶ月フォロー前” :

                table[0].value[‘SMS送信内容’].value = “test そろそろ1ヶ月フォローです” ;

                table[0].value[‘SMS送信内容’][‘disabled’] = true ;

                break ;

            case “1ヶ月フォロー後” :

                table[0].value[‘SMS送信内容’].value = “test もう受けましたか?1ヶ月フォロー” ;

                table[0].value[‘SMS送信内容’][‘disabled’] = true ;

                break ;

            default :

            table[0].value[‘SMS送信内容’].value = “任意記載” ;

            table[0].value[‘SMS送信内容’][‘disabled’] = false ;

            break ;

            }       

        }

        return event;

    });

})(jQuery);

y.ikeda さん

ソースコードありがとうございます。

申し訳ないですがまだ再現していないですね。

ソースコードだけだと断言はできないのですが、el.style.display = ‘none’; が記述されている部分は テーブル外の
フィールド処理だと思いますので、あまり影響はないと思われます。

ただ、確かに今の状況だと何が原因かちょっと分からないですね。
ちょっと面倒をおかけしますが、“フォロー対応手段で「SMS」が選択されているかどうかによって、SMS送信履歴テーブル表示/非表示” と
コメントされている部分のみを実行することで、発生するか試してもらっていいでしょうか?
試してもらったあと、以下の情報をお願いします。

  1. 発生したかどうか
  2. 各フィールドの情報(種類やテーブル内外にあるかなど)
    ※ できれば、パッと見て判断できるフォーム全体が写っている画像がいいですが、無理な場合は文字でも大丈夫です。

あと、テーブル内に残っている画像が気になっています。文字列複数行の幅を伸縮させる部分が残っているのと
上下の▼▲の矢印のようなものが見えるのですが、プラグインあったりします?
ある場合は、一度無効にして動かすこともお願いします。

しぶい様

 

今回の事象は、SMSが選択されているかどうかによりSMS送信履歴テーブルの表示/非表示は問題なく切り替えることが出来ているが文字列複数行の上下の▼▲の矢印のようなものがでて中のテキストが見えない(添付画像のような状態)ことになります。

この部分のみソースコードを切り出して実行してみましたが結果は以下の通りでした。

1.発生した

2.SMS送信履歴テーブルは以下の構成です。

SMS送信区分:ドロップダウン

SMS送信予定日:日付

SMS送信完了日:文字列(1行)

SMS送信内容:文字列(複数行)

 

文字列1行のサイズは特に変わらないですが文字列複数行だけサイズが縦横0になり中のテキストが見えない状態で表示されます。

表示後にサイズを広げることは可能です。

また、サブテーブルの+で行を追加すると正常に表示されます。

 

しぶい様

追記致します。

プラグイン等は特に入れておりません。

切り分けのためコースを以下のように変えたら事象が出なくなりました。

■変更前のコード

kintone.app.record.setFieldShown(‘SMS送信履歴’, false);

if (record[‘フォロー対応手段’][‘value’].indexOf(‘SMS’) != -1) {

    kintone.app.record.setFieldShown(‘SMS送信履歴’, true);

}

■変更後のコード

kintone.app.record.setFieldShown(‘SMS送信履歴’, true);

if (record[‘フォロー対応手段’][‘value’].indexOf(‘SMS’) != -1) {

    kintone.app.record.setFieldShown(‘SMS送信履歴’, false);

}

 

変更前では、初期状態で非表示としておきSMSがチェックされたら表示されるようにしていましたが、

これを逆に初期状態で表示しておきSMSがチェックされたら非表示にするように変えてみました。

この場合、表示/非表示の切替の際に文字列(複数行)が閉じた状態で表示されなくなりました。

これはソースコードの問題なのかKintoneの仕様によるものでしょうか。