5

私のすべての日付ピッカーには、日付ピッカー入力と同じIDを持つが、アンダースコアが前に付いた、自動生成された非表示フィールドがあります。

<div class="datepicker">
    <input id="MyField1" type="text" value="" />
    <input id="_MyField1" type="hidden" value="" />
</div>

<div class="datepicker">
    <input id="MyField2" type="text" value="" />
    <input id="_MyField2" type="hidden" value="" />
</div>

そして、クラスを持つフィールドはすべてdatepicker日付ピッカーになります。

$('.datepicker input').datepicker({
    altFormat: 'yy-mm-dd',
    changeMonth: true,
    constrainInput: true,
    dateFormat: 'dd/mm/y',
    minDate: '+0d',
    numberOfMonths: 2
});

しかし、どうすれば自動的にそれを取得して、それぞれにaltFieldオプションを設定できますか?

これは機能しません。また、元のオプションで割り当てを実行しようとしましたが、それも機能しません。

$('.datepicker input').each(function() {
    var altField = '_' + $(this).prop('id');
    $(this).datepicker('option', 'altField', altField);
});
4

3 に答える 3

5

altFieldオプションは、属性ではなく、セレクター、jQueryオブジェクト、または要素を取ります。id

IDセレクターを指定してみてください:

$(this).datepicker("option", "altField", "#_" + $(this).prop("id"));

$()または、への呼び出しとへの呼び出しを保存しますprop()

$(this).datepicker("option", "altField", "#_" + this.id);
于 2012-12-14T15:31:15.843 に答える
2

これを試して:

$('.datepicker input').each(function() {
    var altField = '#_' + $(this).prop('id');
    $(this).datepicker('option', 'altField', altField);
});
于 2012-12-14T15:34:20.820 に答える
0

jQuery UI Datapicker 1.9、altField、altFormatオプションの使用、および内部メソッドのオーバーライド

フィールドを複製してデータベース形式「yy-mm-dd」で実際の値を格納し、メインフィールドを使用してフォーマットされた値(このサンプルでは「dd-mm-yy」)を表示します。

$(function() {
    var _connectDatepicker = $.datepicker._connectDatepicker;
    $.datepicker._connectDatepicker = function(target, inst) {
        var $target = $(target);
        var $altField = $target.clone(false).appendTo($target.parent()).hide();
        inst.settings.altField = $altField;
        inst.settings.dateFormat = inst.settings.altFormat = "yy-mm-dd";

        _connectDatepicker.call(this, target, inst);
        $target.removeAttr("name").datepicker( "option", "dateFormat", "dd-mm-yy");
    };
});
于 2013-10-28T17:34:21.893 に答える