スマホ入力時の数字項目での入力モード自動切換えで、サブテーブルの追加の時

スマホ入力時に数字項目は入力モードを数字に切り替える処理は以下のように実装し、うまくいきましたが、サブテーブルの行をスクリプト内で追加した行に対しては、入力モードが切り替わりません。

https://js.cybozu.com/jquery/2.1.4/jquery.min.js” をスマートフォン用のJavaScriptに設定し、その下に以下のJavaScriptを設置

jQuery.noConflict();
(function($) {
 "use strict";
kintone.events.on(["mobile.app.record.edit.show","mobile.app.record.create.show","mobile.app.record.create.change.テーブル名","mobile.app.record.edit.change.テーブル名"], function(event) {
 $('.gaia-ui-decimal-input-input input').attr('type', 'number');
 return event;
 });
})(jQuery);

以下は、サブテーブルを追加したスクリプト

(() => {
'use strict';
const table = 'テーブル名';
const changeRowIndex = (event) => {
let record = event.record;
for (let i=0; i < record[table].value.length; i++) {
if(event.changes.row === record[table].value[i]) return i;
};
return (record[table].value.length - 1);
};

kintone.events.on(['mobile.app.record.edit.change.追加',event => {
const record = event.record;
let rowIndex = changeRowIndex(event);
let movecount = record.回数.value;
if(rowInde+1 == movecount) {
record[table].value.push({
value: {
品番: {
type: 'SINGLE_LINE_TEXT',
value: ''
},
数量: {
type: 'NUMBER',
value: 0
}
}
});
}
return event;
{);
})();

 

下から2行目の「{);」は「});」のタイプミス

こちらに説明があるように、サブテーブルのchangeイベントは「+-のボタンをクリックした時」に発火します。JavaScriptによって行を追加した時は+-のボタンを経由しないので発火しません。

 $('.gaia-ui-decimal-input-input input').attr('type', 'number');

この処理を

  if(rowInde+1 == movecount) {
   record[table].value.push({
    value: {
     品番: {
      type: 'SINGLE_LINE_TEXT',
      value: ''
     },
     数量: {
      type: 'NUMBER',
      value: 0
     }
    }
   });
 }
 return event;

この後にも挿入すれば可能かと思いますが、return event(追加したサブテーブルをレコードへの反映)よりは後に発生するようにしなければならないので、

  if(rowInde+1 == movecount) {
   record[table].value.push({
    value: {
     品番: {
      type: 'SINGLE_LINE_TEXT',
      value: ''
     },
     数量: {
      type: 'NUMBER',
      value: 0
     }
    }
   });
setTimeout(() => {
     $('.gaia-ui-decimal-input-input input').attr('type', 'number');
}, 0);
 }
 return event;

こんな感じで実装すれば可能ではないかと思います。

mls-hashimotoさん

ご指摘のように直してみましたが、数字モードになりませんでした。

コンソールにエラーメッセージは無く、ブレークポイントを追加した行にセットし、その行が通過したことを確認しています

mls-hashimoto さん

最初に示したスクリプトでは、「noConflict」を指定していますが、サブテーブルを追加したスクリプトでは、「noConflict」を指定していませんが、”$”は使えるのでしょうか。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。