tempusdominus-datetimepicker- を使用して、htmlフォームに日時ピッカーを作成しようとしています。
ただし、選択した日付をそこから取得できるようにする必要があります。プラグインには date と呼ばれるオプションがあり、ドキュメントによるとモーメントオブジェクトまたはnullを返す必要があります。ここでは、このオプションについてドキュメントが述べています
コンポーネントのモデルの現在の日付、
moment
オブジェクト、または設定されていない場合はnull
を返します
ただし、date
オプションにアクセスするのに苦労しています。
また、ドキュメントから
注すべてのオプションには、
data
属性を介してアクセスします。$('#datetimepicker').datetimepicker(OPTION, ARGUMENT)
だから私は次の日付オプションにアクセスしようとしました。
_from = $('#datetimepicker').datetimepicker('date');
from = $('#datetimepicker').datetimepicker('data', 'date');
from = $('#datetimepicker').datetimepicker('data').date;
from = $('#datetimepicker').datetimepicker(function(e){
return e.date;
});
_
しかし、上記のどれもオブジェクトを返していません。日付オブジェクトにアクセスするにはどうすればよいですか?
このような素敵なプラグインには、getDate()
、setDate(date)
、getFomat()
、setFormat(...)
などのより読みやすいオプションがあると思います。またはイベントの例。これはこのような質問を排除するはずですが、残念ながらそれはしません。
イベントにアクセスするための正しいコードは次のとおりです。
$(function() {
$('#datetimepicker').datetimepicker();
$('#datetimepicker').on("change.datetimepicker", function (e) {
console.log(e.date);
});
});
これを使用しても日付を取得できます:
var date = $('#datetimepicker').datetimepicker('viewDate')
日付を操作するためにフィドルを完成させます: https://jsfiddle.net/10xzksm0/2/
誰かが私と同じ問題を経験していて(bootstrap v4 https://tempusdominus.github.io/bootstrap-4/
を使用)、ピッカーが閉じられたときの日付を知りたい場合は、次のコードを使用します。
$(function () {
$('#datetimepicker').datetimepicker();
$('#datetimepicker').on("datetimepicker.hide", function (e) {
console.log(moment(e.date).format('YYYY-MM-DD HH:mm'));
});
});
この場合、datetimepicker
はhide
の前にあり、change
がdatetimepicker
の前にあるのとは異なります。 hide.datetimepicker
を使用しても機能しません。
多分私は間違っていますが、私が解釈する方法"すべてのオプションはデータ属性を介してアクセスされることに注意してください"次の形式で関数にアクセスすると表示されます
$("#YOU_SELECTOR").data('DateTimePicker').FUNCTION();
console.log($("#YOU_SELECTOR").data('DateTimePicker'));
を実行しようとした場合
data
属性を介して_are accessible
_と言う関数をすべて出力することがわかります。
_{
"destroy": function () {
H(), I(), i.widget.remove(), i.element.removeData("DateTimePicker"), i.component && i.component.removeData("DateTimePicker")
},
"show": function (a) {
if (!l().prop("disabled")) {
if (i.options.useCurrent && "" === l().val()) {
if (1 !== i.options.minuteStepping) {
var c = b(),
d = i.options.minuteStepping;
c.minutes(Math.round(c.minutes() / d) * d % 60).seconds(0), i.setValue(c.format(i.format))
} else i.setValue(b().format(i.format));
o("", a.type)
}
a && "click" === a.type && i.isInput && i.widget.hasClass("picker-open") || (i.widget.hasClass("picker-open") ? (i.widget.hide(), i.widget.removeClass("picker-open")) : (i.widget.show(), i.widget.addClass("picker-open")), i.height = i.component ? i.component.outerHeight() : i.element.outerHeight(), n(), i.element.trigger({
type: "dp.show",
date: b(i.date)
}), G(), a && B(a))
}
},
"disable": function () {
var a = l();
a.prop("disabled") || (a.prop("disabled", !0), H())
},
"enable": function () {
var a = l();
a.prop("disabled") && (a.prop("disabled", !1), F())
},
"hide": function () {
var a, c, d = i.widget.find(".collapse");
for (a = 0; a < d.length; a++)
if (c = d.eq(a).data("collapse"), c && c.transitioning) return;
i.widget.hide(), i.widget.removeClass("picker-open"), i.viewMode = i.startViewMode, E(), i.element.trigger({
type: "dp.hide",
date: b(i.date)
}), I()
},
"setValue": function (a) {
b.locale(i.options.language), a ? i.unset = !1 : (i.unset = !0, K()), a = b.isMoment(a) ? a.locale(i.options.language) : a instanceof Date ? b(a) : b(a, i.format, i.options.useStrict), a.isValid() ? (i.date = a, K(), i.viewDate = b({
y: i.date.year(),
M: i.date.month()
}), t(), x()) : p(a)
},
"getDate": function () {
return i.unset ? null : b(i.date)
},
"setDate": function (a) {
var c = b(i.date);
i.setValue(a ? a : null), o(c, "function")
},
"setDisabledDates": function (a) {
i.options.disabledDates = O(a), i.viewDate && q()
},
"setEnabledDates": function (a) {
i.options.enabledDates = O(a), i.viewDate && q()
},
"setMaxDate": function (a) {
void 0 !== a && (i.options.maxDate = b.isMoment(a) || a instanceof Date ? b(a) : b(a, i.format, i.options.useStrict), i.viewDate && q())
},
"setMinDate": function (a) {
void 0 !== a && (i.options.minDate = b.isMoment(a) || a instanceof Date ? b(a) : b(a, i.format, i.options.useStrict), i.viewDate && q())
}
.............. and more,
_
リンクをクリックしてデモでgetDate()
を呼び出す以下を参照してください。日付を変更して確認することができます。
_$(document).ready(function() {
var picker = $('#datetimepicker7').datetimepicker();
//console.log(picker.datetimepicker('data-view-date'));
//console.log($('#datetimepicker7').datetimepicker('data-show'));
$("#tog").on('click', function() {
//console.log($('#datetimepicker7').data('DateTimePicker'));
console.log($('#datetimepicker7').data('DateTimePicker').getDate());
})
});
_
_<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.2/moment.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/Twitter-bootstrap/3.3.7/css/bootstrap.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/3.1.4/js/bootstrap-datetimepicker.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/3.1.4/css/bootstrap-datetimepicker.css" rel="stylesheet" />
<div class="container">
<div class='col-md-5'>
<div class="form-group">
<div class="input-group date" id="datetimepicker7" data-target-input="nearest">
<input type="text" class="form-control datetimepicker-input" data-target="#datetimepicker7" />
<span class="input-group-addon" data-target="#datetimepicker7" data-toggle="datetimepicker">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
</div>
</div>
<a href="#." id="tog">toggle</a>
</div>
_