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

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

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

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

jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

JavaScript

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

jQuery

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

HTML

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

Q&A

解決済

2回答

3495閲覧

【JQuery UI Datepicker】日付の受け渡し形式の変更方法

kii.32

総合スコア67

HTML5

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

jQuery UI

jQuery UI はjQuery公式のインターフェースライブラリであり、対話型のウェブアプリケーションを作る際に役立ちます。

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2020/04/04 09:51

前提・実現したいこと

JQuery UI Datepickerを利用して、formを作成しました。

[jQuery UI] Datepicker の使い方とオプション

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

形はできたのですが、値の受け渡し方法について、
日付の表記は yy年mm月dd日 で受け渡しは yy/mm/ddで行いたいです。(受け渡し先でyy/mm/ddと決まっているため)
現状はyy年mm月dd日で表記も受け渡しもされていて、どの様に変更をすれば良いか困っています。

該当のソースコード

datepicker

1/* Japanese initialisation for the jQuery UI date picker plugin. */ 2/* Written by Kentaro SATO (kentaro@ranvis.com). */ 3(function (factory) { 4 if (typeof define === "function" && define.amd) { 5 6 // AMD. Register as an anonymous module. 7 define(["../widgets/datepicker"], factory); 8 } else { 9 10 // Browser globals 11 factory(jQuery.datepicker); 12 } 13}(function (datepicker) { 14 15 datepicker.regional.ja = { 16 closeText: "閉じる", 17 prevText: "<前", 18 nextText: "次>", 19 currentText: "今日", 20 monthNames: ["1月", "2月", "3月", "4月", "5月", "6月", 21 "7月", "8月", "9月", "10月", "11月", "12月"], 22 monthNamesShort: ["1月", "2月", "3月", "4月", "5月", "6月", 23 "7月", "8月", "9月", "10月", "11月", "12月"], 24 dayNames: ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"], 25 dayNamesShort: ["日", "月", "火", "水", "木", "金", "土"], 26 dayNamesMin: ["日", "月", "火", "水", "木", "金", "土"], 27 weekHeader: "週", 28 dateFormat: "yy年mm月dd日",//ここをyy/mm/ddに変えると表記も受け渡しもyy/mm/ddになる 29 firstDay: 0, 30 isRTL: false, 31 showMonthAfterYear: true, 32 yearSuffix: "年", 33 // showButtonPanel: true // "今日"ボタン, "閉じる"ボタンを表示する 34 }; 35 datepicker.setDefaults(datepicker.regional.ja); 36 37 return datepicker.regional.ja; 38 39}));

index.php

1<form method="GET" action="受け渡し先" accept-charset="UTF-8" name="" target="_blank"> 2 <dl class=""> 3 <dt><label>日付</label></dt> 4 <dd> 5 <input type="text" name="date" id="datepicker" readonly="readonly"> 6 <label> 7 <input name="unspecifiedDate" type="checkbox" value="1">日付未定 8 </label> 9 </dd> 10 </dl> 11 <div class=""> 12 <dl class=""> 13 <dt><label>泊</label></dt> 14 <dd> <select name="" class=""> 15 <option value="1" selected="selected">1泊</option> 16 <option value="2">2泊</option> 17 <option value="3">3泊</option> 18 <option value="4">4泊</option> 19 <option value="5">5泊</option> 20 <option value="6">6泊</option> 21 <option value="7">7泊</option> 22 </select> </dd> 23 </dl> <input name="" type="hidden" value="1"> 24 </div> 25 <button type="submit" name="" class="search_button">検索する</button> 26 </form>

有識者のかたがいらっしゃいましたら、ご教示いただけますと幸いです。
よろしくお願い致します。

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

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

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

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

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

guest

回答2

0

ベストアンサー

altField / altFormat オプションがあるので、name 属性は送信用の input に移して

HTML

1<input type="hidden" name="date" />

オプションを指定すればいいです。

JavaScript

1 dateFormat: 'yy年mm月dd日', 2 altFormat: 'yy-mm-dd', 3 altField: '[name="date"]'

https://api.jqueryui.com/datepicker/#option-altFormat

投稿2020/04/07 03:09

x_x

総合スコア13749

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

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

kii.32

2020/04/08 15:16

ありがとうございます。ご教授いただいた方法で解決しました!
guest

0

こんにちは

受け渡し用のメソッドをJQueryプラグインとして追加するという手はいかがでしょうか?
仕様としては、たとえばプラグインを .date() として、以下のような動作をするものです。

取得

javascript

1// #datepickerの値が"2020年04月04日"のとき、"2020/04/04" という文字列が返される 2$('#datepicker').date();

設定

javascript

1// #datepickerに"2020年04月04日" が設定される。 2$('#datepicker').date("2020/04/04");

 

以下は実装の一例です。日付のフォーマット変換のために、 moment を使っています。

javascript

1// プラグインメソッド date を追加 2const DATE_FORMAT_1 = 'YYYY年MM月DD日'; 3const DATE_FORMAT_2 = 'YYYY/MM/DD'; 4 5$.fn.date = function(...args) { 6 if (this.attr('id') !== 'datepicker') return; 7 if (args.length === 0) { 8 return moment(this.val(), DATE_FORMAT_1).format(DATE_FORMAT_2); 9 } else { 10 const m = moment(args[0], DATE_FORMAT_2); 11 if (m.isValid()) { 12 this.val(m.format(DATE_FORMAT_1)); 13 } 14 } 15}

以下は、上記の .date() を動作確認するためのサンプルです。

上記のサンプルでは、以下を確認できます。

  • <input> をクリックしてdatepickerから日付を選ぶと、年月日の入った形式(例:2020年04月04日)の文字列が<input>のvalueとして設定されます。

  • 「取得」ボタンをクリックすると、 $('#datepicker').date() によって、YYYY/MM/DD形式の文字列が返されて、「取得」ボタンの右に表示されます。

  • 「設定」ボタンをクリックすると、プロンプトが表示され、ここに 2020/05/01 のような文字列を入力して、OKをクリックすると、 $('#datepicker').date('2020/05/01') によって、$('#datepicker') の値が、 2020年05月01日 に設定されます。

以上、参考になれば幸いです。

投稿2020/04/04 12:40

編集2020/04/04 20:05
jun68ykt

総合スコア9058

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

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

kii.32

2020/04/05 07:04

詳しくご回答いただきありがとうございます。 試してみたのですが、なぜかうまくいかず。。。 下記追記してみたのですが、 表記も受け渡しもyy年mm月dd日でされてしまいます。 <script> $(function() { // $('#datepicker').datepicker().datepicker('setDate', 'today'); $('#datepicker').date(); }); </script> /* Japanese initialisation for the jQuery UI date picker plugin. */ /* Written by Kentaro SATO (kentaro@ranvis.com). */ (function (factory) { if (typeof define === "function" && define.amd) { // AMD. Register as an anonymous module. define(["../widgets/datepicker"], factory); } else { // Browser globals factory(jQuery.datepicker); } }(function (datepicker) { datepicker.regional.ja = { closeText: "閉じる", prevText: "&#x3C;前", nextText: "次&#x3E;", currentText: "今日", monthNames: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], monthNamesShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], dayNames: ["日曜日", "月曜日", "火曜日", "水曜日", "木曜日", "金曜日", "土曜日"], dayNamesShort: ["日", "月", "火", "水", "木", "金", "土"], dayNamesMin: ["日", "月", "火", "水", "木", "金", "土"], weekHeader: "週", dateFormat: "yy年mm月dd日", firstDay: 0, isRTL: false, showMonthAfterYear: true, yearSuffix: "年", // showButtonPanel: true // "今日"ボタン, "閉じる"ボタンを表示する }; $.datepicker.setDefaults($.datepicker.regional["ja"]); $("#datepicker").datepicker(); // プラグインメソッド date を追加 const DATE_FORMAT_1 = 'YYYY年MM月DD日'; const DATE_FORMAT_2 = 'YYYY/MM/DD'; $.fn.date = function (...args) { if (this.attr('id') !== 'datepicker') return; if (args.length === 0) { return moment(this.val(), DATE_FORMAT_1).format(DATE_FORMAT_2); } else { const m = moment(args[0], DATE_FORMAT_2); if (m.isValid()) { this.val(m.format(DATE_FORMAT_1)); } } } datepicker.setDefaults(datepicker.regional.ja); return datepicker.regional.ja; }));
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問