2012-12-14 26 views
5

Tüm randevularmın, otomatik olarak oluşturulmuş, datepicker girişiyle aynı kimliğe sahip, ancak bir alt çizgi eklenmiş gizli bir alanı var. jQuery Datepicker - Tüm tarih tutucular için altField'ı otomatik olarak tanımla

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

Ve

sonra sınıf datepicker sahip herhangi bir alan bir datepicker haline getirilmiş olur.

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

Ancak, her biri için altField seçeneğini ayarlamak için otomatik olarak nasıl alabilirim?

Bu işe yaramıyor. Özgün seçeneklerdeki ödevi de denedim ama bu da işe yaramıyor.

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

'var altField = '_' + $ (this) .prop ('id');': id bir özellik değil, bir özellik olduğunu unutmayın. – Pere

cevap

4

altField seçenek seçici bir jQuery nesne veya bir eleman değil, bir id nitelik alır.

bir id selector belirtmeyi deneyin:

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

Veya alternatif olarak, $() bir çağrı ve prop() bir çağrı tasarrufu:

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

Teşekkürler, bunu nasıl özledim bilmiyorum. – BadHorsie

1

bu deneyin 1.9, altField, altFormat seçeneklerini kullanma ve üste iç yöntemine

Klon alanı, veri tabanı biçiminde "yyyy-aa-gg" olarak gerçek değeri saklamak ve biçimlendirilmiş değeri görüntülemek için ana alanı kullanmak (bu, örnek içinde "gg-aa-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"); 
    }; 
}); 
0

jQuery UI Datapicker:

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

Yukarıdaki örnekte REPLACE var $ altField = $ target.clone (false) .appendTo ($ target.parent()). Hide(); TO var $ altField = $ ("#_" + $ target.prop ("id")); – AndreyP

İlgili konular