o-g-r
@o-g-r (yamada hanako)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

laravel jquery 計算表示後、バリデーションチェックで画面が前に戻ったときに再度表示したい

解決したいこと

jqueryにて自動計算を表示する画面を作成し画面遷移する際に、フォームバリデーションに引っかかると
計算が入力された値が消えてしまいます。
再度表示させるには、jqueryでどのようなアクションを起こしたらよいのでしょうか?

例)

---script---
    $('#hoge').on('change', function() {
        const total = A.val() + B.val() + C.val();
        if ($.isNumeric(total)) {
            $("label.hogehoge_label").text(total);
            //hiddenに値をセット
            $("#hidden").val(total);
        }
    });


 ---blade---
   {{ Form::hidden('hidden', null, ['id' => 'hidden', 'class' => 'form-control'. ($errors->has('hidden') ? ' is-invalid' : null), 'maxlength' =>'10']) }}
   <label class="form-control hogehoge_label"> </label>


事象

hogehogeのラベルに表示されている値が、フォームバリデーションでエラーになると消えてしまいます。
再度計算して、その値を入れたいです。
ただ、A。B、Cに値が入っていない初期状態は計算させたくないです。(0を表示したくないので。)計算して0表示はOK

計算結果は、hiddenにも持っています。

0

2Answer

Blade側で使用するLaravelの機能でoldヘルパという関数があります。
タグにname属性を与えてvalue属性にold('postした際のname属性')を指定することで直前の値を復元できます。

こちらで解決できないでしょうか。

0Like

Comments

  1. @o-g-r

    Questioner

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

jQueryで解決するなら、ページが読み込まれたときに処理を実行するのはいかがでしょうか?

$(function() {
    function example() {
        const total = A.val() + B.val() + C.val();
        if ($.isNumeric(total)) {
            $("label.hogehoge_label").text(total);
            //hiddenに値をセット
            $("#hidden").val(total);
        }
    }

    $('#hoge').on('change', function() {
        example();
    });

    // ページが読み込まれたときに実行
    example();
});
0Like

Comments

  1. @o-g-r

    Questioner

    ありがとうございます。そうですね。読み込まれたときに実行してみます。

Your answer might help someone💌