ユーザーが画像をクリックしたときにJQuery Datepickerを開くようにします。選択した日付が後で表示される入力フィールドはありません。入力した日付をAjax経由でサーバーに保存するだけです。
現在、私はこのコードを持っています:
<img src='someimage.gif' id="datepicker" />
$(document).ready(function() {
$("#datepicker").datepicker({
changeMonth: true,
changeYear: true,
}).click(function() { $(this).datepicker('show'); });
});
しかし、画像をクリックしても何も起こりません。また、datepicker()呼び出しの結果をグローバル変数に保存してから、イメージのonclick()イベントからdatepicker( 'show')を呼び出してみましたが、結果は同じです。
単純な非表示の入力フィールドが仕事をしていることがわかります:
<input type="hidden" id="dp" />
そして、通常のように、画像にbuttonImage属性を使用します。
$("#dp").datepicker({
buttonImage: '../images/icon_star.gif',
buttonImageOnly: true,
changeMonth: true,
changeYear: true,
showOn: 'both',
});
最初にテキスト入力フィールドを試した後、display:none
スタイル、しかしそれはユーザーがクリックした場所からではなく、ブラウザの上部からカレンダーを出現させました。ただし、非表示フィールドは希望どおりに機能します。
入力フィールドとアイコンを使用している場合(この例のように):
<input name="hasta" id="Hasta" type="text" readonly />
<a href="#" id="Hasta_icono" ></a>
次のように、日付ピッカーをアイコンに添付できます(私の場合はCSSを介してAタグ内)。
$("#Hasta").datepicker();
$("#Hasta_icono").click(function() {
$("#Hasta").datepicker( "show" );
});
JQueryのドキュメントには、datePickerが入力ボックスに関連付けられていない場合、SPANまたはDIVに添付する必要があると書かれています。次のようなことができます:
<img src='someimage.gif' id="datepickerImage" />
<div id="datepicker"></div>
<script type="text/javascript">
$(document).ready(function() {
$("#datepicker").datepicker({
changeMonth: true,
changeYear: true,
})
.hide()
.click(function() {
$(this).hide();
});
$("#datepickerImage").click(function() {
$("#datepicker").show();
});
});
</script>
マウスがカレンダーアイコンの上に移動したときに「...」を変更するには、datepickerオプションに以下を追加する必要があります。
showOn: 'button',
buttonText: 'Click to show the calendar',
buttonImageOnly: true,
buttonImage: 'images/cal2.png',
HTML:
<div class="CalendarBlock">
<input type="hidden">
</div>
コード:
$CalendarBlock=$('.CalendarBlock');
$CalendarBlock.click(function(){
var $datepicker=$(this).find('input');
datepicker.datepicker({dateFormat: 'mm/dd/yy'});
$datepicker.focus(); });
入力フィールドを非表示にすると、datepickerダイアログの配置に関する問題が発生します(ダイアログは水平方向に中央揃えされます)。ダイアログのマージンを変更することもできますが、より良い方法があります。
入力フィールドを作成し、不透明度を0に設定し、幅を1ピクセルにすることで「非表示」にします。また、ボタンの近く(または下)、または日付ピッカーを表示したい場所に配置します。
次に、日付ピッカーを「非表示」入力フィールドに添付し、ユーザーがボタンを押したときに表示します。
HTML:
<button id="date-button">Show Calendar</button>
<input type="text" name="date-field" id="date-field" value="">
CSS:
#date-button {
position: absolute;
top: 0;
left: 0;
z-index: 2;
height 30px;
}
#date-field {
position: absolute;
top: 0;
left: 0;
z-index: 1;
width: 1px;
height: 32px; // height of the button + a little margin
opacity: 0;
}
JS:
$(function() {
$('#date-field').datepicker();
$('#date-button').on('click', function() {
$('#date-field').datepicker('show');
});
});
注:すべてのブラウザでテストされているわけではありません。
$(function() {
$("#datepicker").datepicker({
//showOn: both - datepicker will come clicking the input box as well as the calendar icon
//showOn: button - datepicker will come only clicking the calendar icon
showOn: 'button',
//you can use your local path also eg. buttonImage: 'images/x_office_calendar.png'
buttonImage: 'http://theonlytutorials.com/demo/x_office_calendar.png',
buttonImageOnly: true,
changeMonth: true,
changeYear: true,
showAnim: 'slideDown',
duration: 'fast',
dateFormat: 'dd-mm-yy'
});
});
上記のコードは this link に属します
<img src='someimage.gif' id="datepicker" />
<input type="hidden" id="dp" />
$(document).on("click", "#datepicker", function () {
$("#dp").datepicker({
dateFormat: 'dd-mm-yy',
minDate: 'today'}).datepicker( "show" );
});
画像クリックまたはその他のhtmlタグクリックイベントにこのコードを追加するだけです。これは、トリガーをクリックしたときにdatepicker関数を開始することにより行われます。