質問するログイン新規登録
JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

766閲覧

同じページ内に、同一の計算フォームで複数のフォーム

drillponta

総合スコア1

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/07/25 04:36

0

0

前提

初めまして。
Javascript初心者です。
jqueryにてWEBサイト用の計算フォームを作成しております。
様々なサイトを参考にさせていただきながら何とか計算フォームを作成することができたのですが
一つの入力フォームに数字を入力すると全ての結果欄に数字が出てきてしまいます。

実現したいこと

・同じ計算式を使用。
・参照する商品のvalueはそれぞれ商品ごとに違うもの。
・実際は商品数が多く、それに伴いフォームの数も多くなるためできるだけ短いコードで実現したい。
・入力フォームに数値を入力し、それに対応した結果欄にのみ結果を出力したい。

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

・「生地A」のvalueしか参照されない。
・全てのフォームの計算結果欄に計算結果が出力されてしまう。

該当のソースコード

<div class="mitsumori">   <p class="mitsumori-ttl">見積もり</p>   <p class="media-price" value="3500">生地A ¥3,500/m</p>   <div class="mitsumori-form">      <p><span最大生地幅</span><br>1300mm</p>      <input value="" name="textbox01" type="text" class="ef jsNum1" placeholder="長さ">   </div>   <div class="result">   <input value="0" name="textbox02" type="text" class="jsPrice1" readonly> </div> </div> <div class="mitsumori">   <p class="mitsumori-ttl">見積もり</p>   <p class="media-price" value="4000">生地B ¥4,000/m</p>   <div class="mitsumori-form">      <p><span最大生地幅</span><br>1300mm</p>      <input value="" name="textbox01" type="text" class="ef jsNum1" placeholder="長さ">   </div>   <div class="result">   <input value="0" name="textbox02" type="text" class="jsPrice1" readonly> </div> </div>
jQuery(function(){ var tagInput = jQuery('.jsNum1'); // 入力対象のinputタグID名 tagInput.on('change', function() { var tagOutput = jQuery('.jsPrice1'); // 出力対象のinputタグID名 var value = jQuery('.media-price').val(); var str = jQuery(this).val(); var num = Number(str.replace(/[^0-9]/g, '')); // 整数以外の文字列を削除 if(num == 0) { num = ''; } jQuery(this).val(num); if(num != 0){ if(num >= 701) { var price = ( num / 1000 ) * value; var result = Math.round(price); tagOutput.val(addFigure(result)); } else if( 301 <= num && num <= 700 ){ var price = (( 500 / 1000 ) * value) *1.4; var result = Math.round(price); tagOutput.val(addFigure(result)); } else { var price = (( 300 / 1000 ) * value) *1.4; var result = Math.round(price); tagOutput.val(addFigure(result)); } } }); /*------------------------------- カンマ処理 -------------------------------*/ function addFigure(str) { var num = new String(str).replace(/,/g, ""); while(num != (num = num.replace(/^(-?\d+)(\d{3})/, "$1,$2"))); return num; } });

試したこと

分かり難文章で大変申し訳ないのですが、
もしお分かりになる方がおりましたらお力添えいただけると大変ありがたいです。
どうぞ宜しくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

js

1 var tagOutput = jQuery('.jsPrice1'); // 出力対象のinputタグID名 2 var value = jQuery('.media-price').val();

この2行が問題です。
tagOutput は、文書中の jsPrice1 クラスを持つすべての要素を指します。
value は、文書中の media-price クラスを持つ最初の要素の値になります。
これらの要素を、this からの相対位置で求める必要があります。

$(this).closest('.mitsumori').find('.jsPrice1') などとして mitsumori を起点として要素を探すとわかりやすいかと思います。

投稿2022/07/25 04:51

int32_t

総合スコア22013

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

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

drillponta

2022/07/25 05:08

ご回答ありがとうございます。 回答いただいた通り var tagOutput = jQuery('.jsPrice1'); // 出力対象のinputタグID名 var value = jQuery('.media-price').val(); これらを var tagOutput = jQuery('.jsPrice1'); // 出力対象のinputタグID名 var value = jQuery('.media-price').val(); このように変えることで、入力した数値の下の結果欄にのみ計算結果を出すことが出来ました!本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問