2012-12-14 17 views
5

Tutti i miei datepicker hanno un campo nascosto generato automaticamente che ha lo stesso ID dell'input datepicker, ma con un trattino di sottolineatura anteposto.jQuery Datepicker - Definisci automaticamente altField per tutti i datepicker

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

E poi qualsiasi campo che ha classe datepicker ottiene trasformato in un datepicker.

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

Ma come posso anche ottenere automaticamente di impostare l'opzione altField per ciascuno?

Questo non funziona. Ho anche provato a fare il compito nelle opzioni originali ma non funziona neanche.

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

'var altField = '_' + $ (this) .prop ('id');': nota che id è un attributo, non una proprietà. – Pere

risposta

4

L'opzione altField prende un selettore, un oggetto jQuery o un elemento, non un attributo id.

provare a specificare un id selector:

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

Oppure, in alternativa, il salvataggio di una chiamata a $() e una chiamata a prop():

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

Grazie, non so come mi sia mancato. – BadHorsie

1

Prova questa:

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

jQuery UI Datapicker 1.9, Uso di altField, opzioni altFormat e prioritario metodo interno

campo Clone per memorizzare il valore effettivo nel formato di database "AA-MM-dd", e l'uso sul campo principale per visualizzare il valore formattato ("gg-mm-aa" in questo esempio):

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

Nell'esempio sopra REPLACE var $ altField = $ target.clone (false) .appendTo ($ target.parent()). Hide(); TO var $ altField = $ ("#_" + $ target.prop ("id")); – AndreyP