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

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

新規登録して質問してみよう
ただいま回答率
85.31%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

3738閲覧

フォームに入力された日付から年齢を出力したい

emma.

総合スコア26

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2022/02/20 07:38

前提・実現したいこと

フォームAに生年月日が入力されたら、フォームBに年齢を自動入力される様にしたいです。
イメージ説明

発生している問題

入力フォームから年、月、日をバラバラに取得する方法が分かりません。

該当のソースコード

html

1<div class="form form07"> 2 <label for="customer_birthday" class="form_name">生年月日</label> 3 <input id="customer_birthday" type="date" name="customer_birthday" class="form07_date"> 4 <input id="customer_old" type="text" name="customer_old"/> 5 <span class="form_side"></span> 6 7<script> 8 //生年月日 9const birthday = { 10 year: 2000, 11 month: 12, 12 date: 25 13 }; 14 15function getAge(birthday){ 16 17 //今日 18 var today = new Date(); 19 20 //今年の誕生日 21 var thisYearsBirthday = new Date(today.getFullYear(), birthday.month-1, birthday.date); 22 23 //年齢 24 var age = today.getFullYear() - birthday.year; 25 26 if(today <script thisYearsBirthday){ 27 //今年まだ誕生日が来ていない 28 age--; 29 } 30 31 return age; 32} 33 34console.log(getAge(birthday)); 35 36</script> 37</div>

詳細

下記サイトよりjsのコードを拝借しました。
JavaScriptで誕生日から年齢を計算する

js

1 //生年月日 2const birthday = { 3 year: 2000, 4 month: 12, 5 date: 25 6 };

上記を変更さえできれば理想通りになると思われるのですが、安直な考えでしょうか。
不足事項がありましたら教えていただけますと幸いです。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

<input type="date"というものがあるのですね、使ったことがありませんでした・・

https://developer.mozilla.org/ja/docs/Web/HTML/Element/input/date

event.target.valueAsDateでDateとして扱うことができるようですので、次のようなコードを書いてみました。

html

1<div class="form form07"> 2 <label for="customer_birthday" class="form_name">生年月日</label> 3 <input id="customer_birthday" type="date" name="customer_birthday" class="form07_date"> 4 <input id="customer_old" type="text" name="customer_old"/> 5 <span class="form_side"></span> 6 7 <script> 8 //生年月日 9 const birthday = { 10 year: 2000, 11 month: 12, 12 date: 25 13 }; 14 15 function getAge(birthday){ 16 17 //今日 18 var today = new Date(); 19 20 //今年の誕生日 21 var thisYearsBirthday = new Date(today.getFullYear(), birthday.month-1, birthday.date); 22 23 //年齢 24 var age = today.getFullYear() - birthday.year; 25 26 if(today < thisYearsBirthday){ 27 //今年まだ誕生日が来ていない 28 age--; 29 } 30 31 return age; 32 } 33 34 console.log(getAge(birthday)); 35 36 // 追加したコード 37 document.querySelector("#customer_birthday").addEventListener("change", (event) => { 38 birthday.year = event.target.valueAsDate.getFullYear() 39 birthday.month = event.target.valueAsDate.getMonth() + 1 40 birthday.date = event.target.valueAsDate.getDate() 41 const age = getAge(birthday) 42 document.querySelector("#customer_old").value = age 43 }) 44 // 追加したコード 45 46 </script> 47 </div>

投稿2022/02/20 08:34

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

emma.

2022/02/20 09:50

動きました!ありがとうございます。 自分の考え方が安直すぎて恥ずかしい限りです。 1から10まで教えていただき申し訳ありません。 とても勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問