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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

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

Q&A

解決済

1回答

2616閲覧

input type="date"でblurを使ったとき、javascriptで2回目実行以降で日付の差がうまく取得できない

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JavaScript

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

0グッド

0クリップ

投稿2021/06/16 06:23

編集2021/06/16 06:32

input type="date"でblurを使ったとき、javascriptで2回目実行以降で日付の差が
うまく取得できなくて困っています。
vue.js3を使用しています。
どなたかご教授お願いします。

html

1<div class="col-12"> 2 <label class="col-form-label">登録日: </label> 3 <input class="form-control-input" type="date" v-bind:value="startDate" v-on:blur="onDateChanged(1, $event.target.value)" /> 4 <label class="col-form-label"></label> 5 <input class="form-control-input" type="date" v-bind:value="endDate" v-on:blur="onDateChanged(2, $event.target.value)" /> 6</div>

javascript

1onDateChanged(type, value) { 2 // type:1 はstartDateの時、type:2 はendDateの時 3 // valueは$event.target.valueをとっている 4 5 // 実際はblurでこのコードを発生させ、開始日、終了日期間の反転をしないようにしています。 6 // vueでバインドしているのですが、blurの時にthisで取れなかったので$event.target.valueを使用 7 // const startDate = luxon.DateTime.fromISO(value); // または this.startDate 8 // const endDate = luxon.DateTime.fromISO(this.endDate); // または value 9 10 11 let startDate = new Date("2021-06-16"); 12 let endDate = new Date("2021-06-15"); 13 14 let test = startDate - endDate; 15 16 // 1回目はtestがマイナスになる(endDateが小さいときはマイナスになるのが期待している結果) 17 // 2回目以降はtestがプラスになる 18},

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

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

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

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

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

guest

回答1

0

ベストアンサー

申し訳ございません。コードに間違いがあったことが原因でした。
自己解決とさせていただきます。

javascript

1onDateChanged(type, value) { 2 if (type === 1) { 3 const startDate = luxon.DateTime.fromISO(value); 4 const endDate = luxon.DateTime.fromISO(this.endDate); 5 6 // 期間の引き算は下記とした 7 if (endDate.diff(startDate, "days").toObject().days < 0) { 8 9 // 省略 10 11 } 12 13 // 省略 14}

投稿2021/06/16 06:40

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問