javascripで計算した0だけがフィールドに反映されません

フォームブリッジを利用して、予約システムを作成しています。
マイページ機能で予約データの修正ができるようにしていて、
kViewerからデータを取得して、
その時点での予約数や空き人数などの表示をjavascriptを利用して表示しています。

予約数は、修正中の参加人数を引いて表示したいので、
修正対象の参加人数を引くと 0 になるケースがあります。
この 0 になる時だけ、予約数フィールドに数字を反映させることができません。

定員=6 予約数=2 空き人数=4
この日程に予約しているデータ 予約者名=A 参加人数=2
↓この時マイページのフォームには
予約数=0(編集不可) 空き人数=6(編集不可) 参加人数=2(編集可)
と表示するようにしたいです。

ソースは以下のように書いています

 

var capacitycount = ‘定員’; //「定員」のフィールドコード
var reservecount = ‘予約数’; //「予約数」のフィールドコード
var pastparticipants = ‘更新前人数’; //「更新前人数」のフィールドコード

var numpastparticipants = state.record[pastparticipants].value;  

state.record[reservecount].value = parseInt(responses[0].records[3].予約数.value)-parseInt(numpastparticipants);
state.record[vacantcount].value = parseInt(responses[0].records[3].空き人数.value)+parseInt(state.record[pastparticipants].value);

 

フォームブリッジは、数字の表示のみなので、「文字列(1行)」のフィールドを利用しています。

フィールドの設定が問題なのか、javascriptの0の扱いが良くないのか、
どのように処理したら良いか教えてください。

フォームブリッジは使っていないので的外れかもしれませんが、JavaScriptでは数字の0はfalsy(falseとして扱う値)です。仮にフォームブリッジ側でバリデーションチェック等の関係から何等かの判定を行っているのであれば、そちらが原因かもしれません。

その場合は0の場合のみ数字ではなく文字列の0にすれば解決するかもしれません。

let count = parseInt(responses[0].records[3].予約数.value)-parseInt(numpastparticipants);

state.record[reservecount].value = count === 0 ? '0': count;

mls-hashimoto さま

コードも書いていただいてとても助かりました。

このコードで表示できるようになりました。

ありがとうございました。

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