2012-12-14 6 views
5

Wszystkie moje datepicker mają automatycznie wygenerowane ukryte pole, które ma taki sam identyfikator jak dane wejściowe danych, ale z podkreśleniem z wyprzedzeniem.jQuery Datepicker - Automatycznie definiuj altField dla wszystkich datepickerów

<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> 

I wtedy każda dziedzina, która ma klasę datepicker zostanie wykonane w datepicker.

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

Ale w jaki sposób mogę go automatycznie uzyskać, aby ustawić opcję altField dla każdego?

To nie działa. Próbowałem również wykonać zadanie w oryginalnych opcjach, ale to też nie działa.

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

'var altField = '_' + $ (this) .prop ('id');': zauważ, że id jest atrybutem, a nie właściwością. – Pere

Odpowiedz

4

Opcja altField wykonuje selektor, obiekt jQuery lub element nie atrybut id.

Spróbuj określając id selector:

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

lub alternatywnie, oszczędzając wezwanie do $() i wezwanie do prop():

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

Dzięki, nie wiem, jak to przegapiłem. – BadHorsie

1

Spróbuj tego:

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

jQuery UI Datapicker 1.9, Używanie altField, altFormat i nadrzędny wewnętrzna metoda

pole klonowania do przechowywania wartości rzeczywistej w formacie w bazie „yy-mm dd” i wykorzystanie głównego pola do wyświetlania sformatowanej wartości („DD mm rr” w tym przykładzie)

$(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"); 
    }; 
}); 
+0

W powyższym przykładzie WYMIEŃ var $ altField = $ target.clone (false) .appendTo ($ target.parent()). Hide(); TO var $ altField = $ ("#_" + $ target.prop ("id")); – AndreyP