電話番号のハイフンなしでの登録

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

電話番号のハイフンなしの登録をするために、文字列項目で

【電話番号】【電話検索用】【電話番号2】【電話検索用2】という項目を作成しました。

【電話番号】【電話番号2】にはハイフンありで入力し、

【電話検索用】【電話検索用2】には【電話番号】【電話番号2】の値をもとにハイフンなしで登録をしたいです。

【電話番号】【電話番号2】の両方に値が入力されているときには正常に動作するのですが、

【電話番号2】が未入力の場合には保存ボタンを押しても何も反応しません。

条件分岐でifを追加したのですが、それでも何も反応しません。

修正箇所などをご教授いただけると幸いです。

※【電話番号】は必須入力にしているので、未入力になることはありません。

 

jQuery.noConflict();
(function($) {
"use strict";
/**
* 電話・FAX番号のハイフンを削除して登録する
*/
kintone.events.on('app.record.edit.submit', function(event) {

var record = event.record;
var TEL = record.電話番号.value.replace(/-/g,'');
var TEL2 = record.電話番号2.value.replace(/-/g,'');

if(record.電話番号.value !== ''){
record.電話検索用.value = TEL;
}

if(record.電話番号2.value !== ''){
record.電話検索用2.value = TEL2;
}

return event;
})
})(jQuery);
var TEL2 = record.電話番号2.value.replace(/-/g,'');

Uncaught TypeError: Cannot read properties of undefined (reading ‘replace’)

とコンソール画面に表示されました。

空のときにreplaceを使用としているからのようです。

if(record.電話番号2.value !== ''){

は、空白かどうかはチェックできますが、

console.log(record.電話番号2.value)

してみると undefined でした。

const kintonevalue = undefined;

if (kintonevalue !== "") {
console.log("undefinedと空は同じではありません");
} else {
console.log("undefinedと空は同じ");
}

"undefinedと空は同じではありません"

と表示されました。

(function ($) {
'use strict';
/**
 * 電話・FAX番号のハイフンを削除して登録する
 */
kintone.events.on('app.record.edit.submit', function (event) {
  const record = event.record;
  const TEL = record.電話番号.value;
  const TEL2 = record.電話番号2.value;
  if (TEL) {
    record.電話検索用.value = TEL.replace(/-/g, '');
  }
  if (TEL2) {
    record.電話検索用2.value = TEL2.replace(/-/g, '');
  }
  return event;
});
})();

 

harada様

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

修正したコードのご提示ありがとうござます!

undefinedと空の違いがあるのですね。

勉強になりました。

 

提示いただいたコードを一部修正し、電話番号2に値がない場合は""をセットするようにいたしました。

おかがで、無事に望む機能を実装することができました。

ありがとうござます。

 

(function ($) {
"use strict";
/**
* 電話・FAX番号のハイフンを削除して登録する
*/
kintone.events.on("app.record.edit.show", function (event) {
const record = event.record;
const TEL = record.電話番号.value
const TEL2 = record.電話番号2.value

if (TEL) {
 record.電話検索用.value = TEL.replace(/-/g, "");
}

if (TEL2) {
 record.電話検索用2.value = TEL2.replace(/-/g, "");
}else{
record.電話検索用2.value = "";
}

return event;

});
})();

記載し忘れました。

kintone.events.on("app.record.edit.show",function (event) {

の部分、edit.showだけでよいのかは念のためご確認ください。

harada様

ご指摘ありがとうございます。

edit.showとしたのは動作確認しやすいので、そうしておりました。

実際にはレコード追加時とレコード編集保存時に今回の内容を設定しております!