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

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

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

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

3回答

9274閲覧

bootstrap-datepickerで「日付選択」のボタンに選択した日付が表示されてしまう

hidepon

総合スコア206

jQuery

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2016/04/07 04:43

編集2016/04/08 02:02

bootstrap-datepickerで「日付選択」のボタンに選択した日付が表示されてしまいます。
$( '#dp_pos1').val(”日付選択”);
としても表示は変わりません。
どのようにすればよいでしょうか?

<table id="pt1" border="1" class="table"> <tbody> <tr> <th>実施日</th> <td> <input type="text" id="target_year" name="target_year" size="4" maxlength="4" class="inp" value="" />年 <input type="text" id="target_month" name="target_month" size="2" maxlength="2" class="inp" value="" />月 <input type="text" id="target_day" name="target_day" size="2" maxlength="2" class="inp" value="" />日 <input type="button" id="dp_pos1" name="dp_pos1" value="日付選択" /> </td> </tbody> </table> コード $( '#dp_pos1' ).datepicker().on( 'changeDate', function( e ) { $( '#target_year' ).val( e.date.getFullYear() ); $( '#target_month' ).val( e.date.getMonth() + 1 ); $( '#target_day' ).val( e.date.getDate() ); });

追記

<table id="pt2" border="1" class="table ap_table"> <tbody> <tr> <th>実施日2</th> <td> <input type="text" id="target_year2" name="target_year2" size="4" maxlength="4" class="inp" value="<?php echo $target_year;?>" />年 <input type="text" id="target_month2" name="target_month2" size="2" maxlength="2" class="inp" value="<?php echo $target_month;?>" />月 <input type="text" id="target_day2" name="target_day2" size="2" maxlength="2" class="inp" value="<?php echo $target_day;?>" />日 <input type="button" id="dp_pos2" name="dp_pos2" value="日付選択" /> <input type='hidden' id='container' /> </td> </tr> </tbody> </table> <div id='dpbody' style='position:absolute;left:200px'></div> //JS $('#container').datepicker({ language : ja, clearBtn : true, container : '#dpbody' }).on('changeDate', function(){ if(e.date){ var d = e.date; $('#target_year2').val( d.getFullYear() ); $('#target_month2')val( d.getMonth() + 1 ); $('#target_day2').val( d.getDate()); } $(this).datepicker('hide') }); $('#dp_pos2').on('click', function(){ $('#container').datepicker('show').on( 'changeDate', function( e ) { $('#target_year2').val( e.date.getFullYear() ); $('#target_month2').val( e.date.getMonth() + 1 ); $('#target_day2').val( e.date.getDate()); $(this).datepicker('hide') }); });

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

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

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

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

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

guest

回答3

0

ベストアンサー

質問者ソース)

javascript

1$('#container').datepicker({ 2 language : ja,

オプションの値はstringでした。元ネタの私の方のソースもミスってましたねorz

正)

javascript

1$('#container').datepicker({ 2 language : "ja",

質問者ソース)

javascript

1if(e.date){ 2 var d = e.date; 3 $('#target_year2').val( d.getFullYear() ); 4 $('#target_month2')val( d.getMonth() + 1 );

最後の行、ドットが落ちてます。(これもコピペ元の誤記かorz)

正)

javascript

1if(e.date){ 2 var d = e.date; 3 $('#target_year2').val( d.getFullYear() ); 4 $('#target_month2').val( d.getMonth() + 1 );

投稿2016/04/08 02:13

編集2016/04/08 02:18
tkturbo

総合スコア5572

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

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

hidepon

2016/04/08 03:00

私の不注意とかも重なって申し訳ございません。 function(){ のところに引数eを入れたら動くようになりました。 あとはポジションの位置調整のみです。 左上はしに表示されてしまうのをボタン付近に表示されるように頑張ってみます。 CSSの問題なんですよね!? 試行錯誤で頑張ってみます。 本当に有難うございます。
hidepon

2016/04/08 05:20

本当に申し訳ございません。 style='position:absolute;left:200px' を外して $('#dpbody').css("text-align,center"); のようにして位置調整を試みていますが、位置変更が反映されません。 もともとレスポンシブ対応のbootstrapの機能なので位置が変わるのは想定外でした。 CSSファイルを設定しているのですが。位置がうんともすんとも動きません。 できれば、ボタンの下ぐらいに表示できればと思っていました。 難しそうなので、画面中央でも良いかなと思っています。(レスポンシブの意味合いで) 本当に申し訳ないのですが、ご教授頂ければ有難いです。
tkturbo

2016/04/08 05:31

「CSS」に関する質問ということで「レスポンシブ対応の画面で任意の位置にタグを配置するにはどうすればいいか」を新規でかけた方がいいと思います。(正直私はCSS関連はあまり詳しくないので、ここで1:1のやり取りをしてるよりも他の詳しい人を頼りにしましょう)
hidepon

2016/04/08 05:38

そうですね。本当に有難うございました。簡単に日付選択できるという説明だったのですが、小生が目指していることに対応するだけでこんなに苦しむとは思っていませんでした。 有難うございました。
tkturbo

2016/04/08 05:42

せっかくベストアンサーいただいてありがたいのですが、つけるなら私のもう一つの回答のほうにしていただけると。。。
hidepon

2017/02/04 02:54

すみません。使い方が良く分かっていなかったです・・・・orz
guest

0

ちょっち力技ですが。

html側:

<input type="text" id="target_year" name="target_year" size="4" maxlength="4" class="inp" value="" />年 <input type="text" id="target_month" name="target_month" size="2" maxlength="2" class="inp" value="" />月 <input type="text" id="target_day" name="target_day" size="2" maxlength="2" class="inp" value="" />日 <input type="button" id="dp_pos1" name="dp_pos1" value="日付選択" /> <input type='hidden' id='container' />

hiddenを一つ追加してます。

で、javascript側

$('#dp_pos1').on('click', function(){ $('#container').datepicker('show').on( 'changeDate', function( e ) { $( '#target_year' ).val( e.date.getFullYear() ); $( '#target_month' ).val( e.date.getMonth() + 1 ); $( '#target_day' ).val( e.date.getDate()); $(this).datepicker('hide') }); });

要するにボタンはボタンの役割だけ(押されたらdatepicker呼び出し[show])
DatePicker側はchangeイベントの最後に自分を消す(hide)という。

もともと入力欄とセットで使うのが目的のものなので今回の質問者さんの使用法はおそらく想定外のものだったのではないかと。

■追記:
datepicker→各inputタグの値渡しはできてるけどその逆がないので追加。

var r = function(dp){ $('#target_year').on('change', function(){ var d =dp.datepicker('getDate'); d.setFullYear($(this).val()); dp.datepicker('setDate', d); }); $('#target_month').on('change', function(){ var d = dp.datepicker('getDate'); d.setMonth($(this).val() - 1); dp.datepicker('setDate', d); }); $('#target_day').on('change', function(){ var d = dp.datepicker('getDate'); d.setDate($(this).val()); dp.datepicker('setDate', d); }); }; r($('#container'));

■追記2:
最終的にこれくらいにしとけば変更に耐えやすいかな。

$(function(){ var dpinit = function(dp, year, mon, day, d){ var _get = function(elm){ return elm.datepicker('getDate'); } var _set = function(elm, val){ elm.datepicker('setDate', val); return elm; } dp.datepicker().on('changeDate', function(e) { year.val( (d =e.date).getFullYear() ); mon.val( d.getMonth() + 1 ); day.val( d.getDate()); $(this).datepicker('hide') }); $('#dp_pos1').on('click', function(){ dp.datepicker('show'); }); year.on('change', function(){ (d =_get(dp)).setFullYear($(this).val()); _set(dp, d); }); mon.on('change', function(){ (d =_get(dp)).setMonth($(this).val() - 1); _set(dp, d); }); day.on('change', function(){ (d =_get(dp)).setDate($(this).val()); _set(dp, d); }); }; dpinit($('#container'), $('#target_year'), $('#target_month'), $('#target_day')); });

■追記3

datepickerのオプションについて

■日本語化
「language : "ja"」→有効にするために「bootstrap-datepicker.ja.js」または「bootstrap-datepicker.ja.min.js」を読み込んどく必要があります。

■クリアボタン
「clearBtn:true」→クリアボタンを押すと「changeDate」イベントも発生するため、選択された日付データを取得するところでnull対策をしないといけないです。

■選択したらすぐ消滅
「autoclose:true」→私のやり方だと設定の必要がありません。勝手に「hide」メソッド呼んでるので。

■表示が左上になる
「container:表示位置の基準要素」→どちらかというとstylesheetの設定の問題。

で、html部を再掲

<input type="text" id="target_year" name="target_year" size="4" maxlength="4" class="inp" value="" />年 <input type="text" id="target_month" name="target_month" size="2" maxlength="2" class="inp" value="" />月 <input type="text" id="target_day" name="target_day" size="2" maxlength="2" class="inp" value="" />日 <input type="button" id="dp_pos1" name="dp_pos1" value="日付選択" /> <input type='hidden' id='container' /> </tbody> </table> <div id='dpbody' style='position:absolute;left:200px'></div>

次にjavascript(一部)

$('#container').datepicker({ language : 'ja', clearBtn : true, container : '#dpbody' }).on('changeDate', function(){ if(e.date){ var d = e.date; $('#target_year').val( d.getFullYear() ); $('#target_year').val( d.getMonth() + 1 ); $('#target_year').val( d.getDate()); } $(this).datepicker('hide') }); $('#dp_pos1').on('click', function(){ $('#container').datepicker('show'); });

。。。さあ、これでどや。

投稿2016/04/07 05:35

編集2016/04/08 02:17
tkturbo

総合スコア5572

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

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

hidepon

2016/04/07 08:13

すごいご回答を頂き有難うございます。 ちょっと理解するのに時間がかかりそうですが・・・。(笑) あと今回の変更での問題点として、 1ブラウザでポップアップ表示が左上になってしまう。 2.オプションの追加(日本語化、設定後に自動クローズなど) var options = { language : "ja", clearBtn : true, autoclose:true } 合わせて教えて頂ければと思います。 宜しくお願いいたします。
tkturbo

2016/04/07 09:10

追記3に書いときました。
hidepon

2016/04/07 13:00

有難うございます。日本語化のライブラリは読み込んでいます。 クリアボタンは不要です。 コピーしたのですが、動かなくなりました。 そのままのコピーで良いんでしょうか? 追記2に比べると軽量化されたような気がします。 レベルが高すぎて・・・。 宜しくお願いいたします。
tkturbo

2016/04/07 13:41

html部分は追記3で。 javascript部分は追記3、追記1の順で書けば大丈夫なはずです。 が、「そのままのコピーで」←プログラマがヒントをやり取りするためのサイトであって、無料で開発してもらうところじゃないんで。
hidepon

2016/04/07 13:59

返答有難うございます。ご指摘の点は理解しています。申し訳ございません。ちょっとやってみます。
tkturbo

2016/04/07 14:11 編集

どうしてもあかんようだったら修正後のhtml、javascript部分を質問に追記して下さい。
hidepon

2016/04/08 02:03

昨日は失礼いたしました。 いろいろ考えながらやってみましたが、うまくいかない状況です。 質問欄に追記しました。 本当に申し訳ございませんが、ご教授頂きたくお願いいたします。
tkturbo

2016/04/08 02:18 編集

質問者追記より、コピペ元の私の書いたスクリプトに誤記があったので修正しました。(追記3:「language:ja,」→「lanuage:'ja',」、jQueryのvalに対するドット落ち)
guest

0

datepicker の呼び出し方が他にもあるかも知れませんね。
下記のようにしても変わりませんでしたか?

JavaScript

1$( '#dp_pos1' ).datepicker().on( 'changeDate', function( e ) { 2 $( '#target_year' ).val( e.date.getFullYear() ); 3 $( '#target_month' ).val( e.date.getMonth() + 1 ); 4 $( '#target_day' ).val( e.date.getDate() ); 5 $( '#dp_pos1').val( '日付選択' ); 6});

【Markup — bootstrap-datepicker documentation】
http://bootstrap-datepicker.readthedocs.org/en/stable/markup.html#inline-or-embedded

inline or embedded

HTML

1<div id="datepicker" data-date="12/03/2012"></div>

投稿2016/04/07 05:03

編集2016/04/07 05:09
kei344

総合スコア69398

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

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

hidepon

2016/04/07 05:07

ご返答有難うございます。上記の方法では選択した日付がボタン上に表示されてしまいます。 単純に解決できると思いきや悪戦苦闘しています。 引き続きよろしくお願いいたします。
kei344

2016/04/07 05:26

<button type="button id="dp_pos1" name="dp_pos1" data-date="">日付選択</button> ボタンタグでは?
hidepon

2016/04/07 05:57

データがPOSTされちゃいますね・・・なんでだろう??ん・・・困りましたね・・・引き続きよろしくお願いいたします
kei344

2016/04/07 06:09

<label for="dp_pos1"><input type="button" id="dp_pos1" name="dp_pos1" value="" />日付選択</label> として、#dp_pos1をCSSでうまく隠してしまえれば。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問