見出し画像

フォームブリッジの数値フィールドのプラスマイナスマークを隠す

フォームブリッジの数値フィールドの数値フィールドの「+」「-」入力させる内容によっては不要ですよね。
特にテーブルの中の数値だと無駄に横に長くなって困ります。
公式のQ&Aの回答では非表示にできないという回答がされています。

数値フィールドの「+」「-」を非表示にすることはできますか?

「+」「-」を表示したくない場合は、数値フィールドではなく文字列(1行)フィールド等をご利用ください。

この回答の通り、文字列(1行)フィールドで済めばよいのですが、文字列(1行)フィールドにして、半角数字のみにした場合、小数点の入力をするとエラーになります。
かといって半角英数字記号のみにすると、今度は自動計算で計算することができません。
なんで〜〜〜という仕様ですが仕方がありません。
今回は解決策の一つとして、もともとの数値フィールドのCSSとJSを変更することにしました。

使い方

以下のCSSとJSをPCに保存して、JSのフィールドコードを環境にあわせて変更してください。

コード

CSS(+ボタンと-ボタンを隠す)


.el-input-number__decrease,
.el-input-number__increase {
    display: none;
}

JS(数値フィールドを右寄せにする。)

/**
 * 特定のフィールドのテキストを右寄せにし、右側のパディングを設定する関数。
 * 
 * @param {Array} fieldCodes - フィールドコードの配列。
 */
function alignNumberFieldsRight(fieldCodes) {
    fieldCodes.forEach(function(fieldCode) {
        // フィールドコードに基づいてフィールド要素を取得
        const elements = document.querySelectorAll(`[name="${fieldCode}"]`);
        elements.forEach(function(element) {
            const input = element.querySelector('input');
            if (input) {
                // テキストを右寄せにし、右側のパディングを設定
                input.style.textAlign = 'right';
                input.style.paddingRight = '5px';
            }
        });
    });
}

/**
 * テーブル内の特定のフィールドのテキストを右寄せにし、右側のパディングを設定する関数。
 * 
 * @param {string} tableCode - テーブルのフィールドコード。
 * @param {Array} fieldCodes - テーブル内のフィールドコードの配列。
 */
function alignTableNumberFieldsRight(tableCode, fieldCodes) {
    // テーブル要素を取得
    const tableElements = document.querySelectorAll(`[data-table-code="${tableCode}"]`);
    tableElements.forEach(function(tableElement) {
        fieldCodes.forEach(function(fieldCode) {
            // テーブル内の特定のフィールド要素を取得
            const fieldElements = tableElement.querySelectorAll(`[data-field-code="${fieldCode}"]`);
            fieldElements.forEach(function(fieldElement) {
                const input = fieldElement.querySelector('input');
                if (input) {
                    // テキストを右寄せにし、右側のパディングを設定
                    input.style.textAlign = 'right';
                    input.style.paddingRight = '5px';
                }
            });
        });
    });
}

// フォームがマウントされた後、またはテーブルに行が追加された後に実行
document.addEventListener('DOMContentLoaded', function() {
    // ここでフィールドコードを設定
    const numberFields = ["通常フィールドコード1", "通常フィールドコード2"];
    alignNumberFieldsRight(numberFields);

    const tableNumberFields = ["テーブルフィールドコード1", "テーブルフィールドコード2"];
    alignTableNumberFieldsRight("テーブルコード", tableNumberFields);
});


この記事が気に入ったらサポートをしてみませんか?