あなたが正しいとマークした回答は、実際には正しくありません。私はそれを分解してみましょう。あなたがclick
イベントあなたのコントロールが非常に悪いですfocus
に入るたびに、結着ている$("#monthDate1").focus
これにより
$("#monthDate1").focus(function() {
$(".ui-datepicker-calendar").hide();
//add event to perform on done button click
$(".ui-datepicker-close").click(function(){
var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$("#monthDate1").datepicker('option', 'defaultDate', new Date(year, month, 1));
$("#monthDate1").datepicker('setDate', new Date(year, month, 1));
});
});
。
$(".ui-datepicker-close")
にclick
の度に$.ajax
を起動することを検討してください。あなたの機能はサーバから一度だけ要求するつもりですが、あなたのコントロールがfocus
に入った回数だけ要求します。
修正:
が$("#monthDate1")
にfocus
を結合するが、代わりに(i`m間違えない場合はjQueryのバージョンの> = 1.9.3)live
またはdelegate
を使用しないでください。ここで
はlive
と例です。ここで
はdelegate
と例です。
$("#ui-datepicker-div").delegate(".ui-datepicker-close", 'click', function(){
var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
$("#monthDate1").datepicker('option', 'defaultDate', new Date(year, month, 1));
$("#monthDate1").datepicker('setDate', new Date(year, month, 1));
});
UPDATE
このアップデートは、私は私のコメントに与えた応答になります。 focus
イベントの中では、ユーザにとってはあまりよくないので、$(".ui-datepicker-calendar").hide();
というイベントはありません。ここで
あなたは問題なくそれを行うべきかです:
var dynamicStyle = $("<style> .ui-datepicker-calendar { display: none; } </style>")
.attr("id", "dynamicDatepickerStyle");
$("#monthDate1").datepicker({
beforeShow: function()
{
$("body").append(dynamicStyle);
},
onClose: function()
{
$("#dynamicDatepickerStyle").remove();
}
});
これはあなたopen
datepicker
とdatepicker
がで閉じているときstyle
をremove
ますcalendar
をhide
ますstyle
を追加しようとしていますページ上の他の日付ピッカーには影響しません。これは、ページ上に複数の日付ピッカーを持ちたい場合は、calendar
とそれ以外のものもあります。
このコメントをいただきありがとうございます。私は 'live()'または1.7以上のバージョンのjQuery 'on()'メソッド(+1)の使用に同意します。私はあなたがすべての焦点の使用に同意しないことを読んでいます。したがって、私のケースでは必須である '.ui-datepicker-calendar'をどうやって隠すのか分かりませんので、実際の例を提供できるかどうか、私は非常に感謝しています。 – Boro
'$(" .ui-datepicker-calendar ")。hide();'この関数は、この日付ピッカーがカレンダーを表示しないようにする場合にのみ使用します。 それとも、グローバルにオーバーライドするが、あなたはそれを読み込むところ、このサイト内のすべてのdatepickersに影響を与えることを認識することができます ' ' それともあなたはこのようにそれを必要とするページ上のスタイルを注入できます ' $( 'some_container')( '' を追加。 ); ' – alexo
それを明確にしてくれてありがとう。 – Boro