日付ピッカーがあります
<input type='text' class='inp'>
<script>
$('.inp').datepicker();
$(".inp").on("change",function (){
console.log('inp changed');
});
</script>
最初に '.inp'を変更し、そこに値を手動で入力したら、すぐにdatepickerの開いているカレンダーをクリックします。 2つの「変更」イベントリスナーを取得します。最初に手動変更から、次に日付ピッカーの変更から。どうすればこれを回避できますか?
入力readOnly
を設定すると、アイコンのみでフィールドの値を変更できます。
<input type='text' class='inp' readOnly />
次のように、onSelect
を使用して選択した日付を取得します。
$(function() {
$(".inp").datepicker({
onSelect: function(dateText, inst) {
// alert(dateText);
}
});
});
次のようなonSelect関数を使用してみてください。
$(function() {
$( ".datepicker" ).datepicker({
onSelect: function() {
//your code here
}});
これは、入力しているときではなく、カレンダーから日付を選択したときに発生します。
OnSelectを使用して、テキストフィールドで変更イベントをトリガーできます。この方法では、テキストボックスまたは日付ピッカーを使用して日付を編集しても同じように動作します。
$('.inp').datepicker({
onSelect: function() {
return $(this).trigger('change');
}
);
$(".inp").on("change",function (){
console.log('inp changed');
}
bootstrap datepickerを使用している場合、以下を実行できます。
$('.datepicker').datepicker()
.on('changeDate', function(e){
# `e` here contains the extra attributes
});
詳細ビューの場合: Bootstrap Datepicker events
皆さんありがとう、これは私が使ったものですが、
function myfunction(x,x2){
var date1 = new Date(x);
var MyDateString;
MyDateString = date1.getFullYear()+ '/' + ('0' + (date1.getMonth()+1)).slice(-2) + '/' + ('0' + date1.getDate()).slice(-2);
x2.value= MyDateString;
}
x、datepicker値、x2はdatepickerオブジェクト
これを試して
$(function() {
$("#birth_date").datepicker({
onSelect: function() {
console.log("You Code Here");
}});
});
ありがとう!みなさん、しかし、私はフィールドを読み取り専用にすることはできませんでした。これは要件です。だから私は自分自身を研究しなければなりませんでした。そこで、最終的な解決策を投稿します。 150ミリ秒のバインドを解除してから、再度バインドしました。 これのためにjqueryプラグインを作成しました
function myfunc(that){
$(that).one('change', function(){
var that = this;
setTimeout(function(){myfunc(that);}, 150);
//some logic
}
)
}
myfunc(".inp");