0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

入力した値段を非同期的に表示したい

0
Last updated at Posted at 2020-09-06

【概要】

1.結論

2.どのように記述するのか

3.ここから学んだこと

1.結論

javascript(jquery)で、inputイベントを使う!


2.どのように記述するのか ----------------------------------------
app/javascript/price.js
$(function(){
  $('#item-price').on('input', function(){
    let tax = $('#item-price').val();
    $('#tax-price').text(Math.ceil(tax * 0.1));
    $('#benefit').text(Math.ceil(tax - (tax * 0.1)));
  });
});

自分が書いたプログラムはこのようになります!

即時関数宣言をしています。
item-price/tax-price/benefit はHTMLの各表示部分の”id名”になります!価格が表示される部分と繋がっています。

inputイベントは値が変更された時に発火するもので、
item-priceに2000円と入力すればtax-price(200円)/benefit(1800円)と表示されるようになっています!

またtext(Math.ceil(tax * 0.1))の部分で、
textは'#tax-price'の中身を取得し、Math.ceilは小数点を切り上げています!

valも'#item-price'の中身を取得しています!

助けていただいたURL:
イベント: change, input, cut, copy, paste

.val()について


3.ここから学んだこと ---------------------------------------- 最初はinputイベントの部分をchaengeイベントで使用していました。そうすると、changeイベントでは、入力したあとでページのどこかしらを一度クリックしないと金額変更が反映されないことに気づきました。なのでinputイベントに変更しました。ただ戻るボタンを押して以前入力した金額を残した状態で金額変更を反映させる部分についてはキャッシュも絡んでくるので、もっと勉強しておきます!
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?