質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

405閲覧

JavaScriptでフォームを連動させ、どの順番で入力してもすべてのフォームに反映されるようにしたい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/10/06 02:29

編集2020/10/09 16:26

前提・実現したいこと

Javascriptをruby on railsのビュー上で使用し、再読み込みせずにブラウザ上で計算を行えるように実装したいです。

今回作成中のアプリは割勘計算機能がメインで、一部の人の支払額が決まっているとき(例えば飲み会で女性は一人3000円だけ支払えば良い時など)、その他の残った人たち(男性)の一人当たりの支払額を最終的に表示したいです。

下記からは、飲み会での男女の例がわかりやすいのでそれをもとに説明していきます。

基本的な使い方としては、総支払額と総人数をまず入力し、その後女性の人数と一人当たりの支払額を入力すれば、男性の人数と一人当たりの支払額も表示します。

発生している問題・エラーメッセージ

上記の機能自体は現在実装できているのですが、決まった順番でしか正常に動作しないのが今回の問題です。

想定どおり最初に総支払額と総人数を打ち込んでから女性の支払額や人数を打ち込むと正常に動作します。

しかし、例えばすべて入力後に後から総支払額を変更すると、本来それに連動して男性の一人当たりの支払額も変更してほしいところですが、反映されず最初に出力された値から変わりません。

どの順番でフォームに入力しても、きちんとすべて反映されている状態にしたいのです。

(また、下記コードを見ていただければわかると思いますが、何度も同じ記述を繰り返してしまっています。もしその辺りをまとめる方法等あれば、それだけでも教えていただけるとありがたいです。)

どうぞよろしくお願いいたします。

ソースコード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/10/06 02:37

javaタグはjavascript?
退会済みユーザー

退会済みユーザー

2020/10/06 02:41

その通りです。誤ってタグを登録してしまいました、すみません。
退会済みユーザー

退会済みユーザー

2020/10/06 02:42

現在修正依頼中です。
AkitoshiManabe

2020/10/06 07:11 編集

例示した条件だけですと、割勘計算とは名ばかりの会費徴収システム(業務依頼)にも捉えられます。 var totalPrice = 16000; var organizer = 3; // 主催者(男) var participant = 3; // 参加者(女) var entryFee = 3000; // 参加費 console.log( totalPrice / (organizer+participant) ); // 平均:2666.6... 参加費3000円は疑問 (参加費の丸め方は示しておいたほうが良いと思います:追記)
maisumakun

2020/10/06 07:11

> 例えばすべて入力後に後から総支払額を変更すると、本来それに連動して男性の一人当たりの支払額も変更してほしいところですが 男性の支払額だけ変わる、という仕様で問題ないのでしょうか?
退会済みユーザー

退会済みユーザー

2020/10/07 01:29

AkitoshiManabeさん アドバイスありがとうございます! おっしゃる通りなので、これから丸め方等も実装していきたいと思います。
退会済みユーザー

退会済みユーザー

2020/10/07 01:29

maisumakunさん おっしゃる通りです。 返答遅れてしまい申し訳ありません。
guest

回答1

0

ベストアンサー

こんにちは。

しかし、例えばすべて入力後に後から総支払額を変更すると、本来それに連動して男性の一人当たりの支払額も変更してほしいところですが、反映されず最初に出力された値から変わりません。

ご提示のコードの

js

1total_people.addEventListener('keyup', () => { 2... 3})

これは、total_people の中でキーが押されて離れた時に...をしなさい、という意味です。

ですので、「総支払額を変更すると...してほしい」のであれば、「総支払額」のフォームで同様のことを書かなくてはいけません。

具体的に言うと、total_payment に対しての処理を書いてみてください。


どの順番でフォームに入力しても、きちんとすべて反映されている状態にしたいのです。

同様に、他のフォーム全てに対して、同様のことをすればいいかと思います

参考になれば幸いです。

投稿2020/10/06 07:00

編集2020/10/06 07:04
Lhankor_Mhy

総合スコア36960

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/10/07 01:33

ありがとうございます!解決しました! 総人数の方はきちんとtotal_peopleに対してイベント発火を行なっているのに、 教えていただいた通り、総支払額の方でミスをしてしまっていたのが原因でした。 ケアレスミスで駄文を読ませてしまい申し訳ないですが、 煮詰まっていて自分では解決できなかったと思うのでありがたいです。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問