2009-10-29 5 views
12

Sto cercando di ottenere un attributo di un selettore di date per estrarre dinamicamente la data, tuttavia ottengo errori di eccezione non rilevati quando provo a impostarlo su una variabile.jquery datepicker data predefinita

Gli errori si verificano solo su pagine che NON hanno il calendario (in linea). Come posso cancellare il tag rel dal selettore senza ottenere questo errore?

//Event Calendar Home Page and Listing 
function calendar_picker() { 
$("#calendar-inline").datepicker({ 
    //defaultDate: $(this).attr('rel'), 
    dateformat: 'yy-mm-dd', 
    maxDate: '+1y', 
    minDate:'-0d', 
    hideIfNoPrevNext: true, 
    showButtonPanel: false, 
    navigationAsDateFormat: false, 
    onSelect: function(dateText, inst) { 
       var d = new Date(dateText); 
    var fmt1 = $.datepicker.formatDate("yy-mm-dd", d); 
    $.ajax({ 
    type: "POST", 
    url: "/events/listing/all/20/", 
    dataType: "html", 
         date: "event_date="+fmt1, 
    success: function(){ 
         window.location.href= "/events/browse/"+fmt1; 
    }});}}); 
} 

UPDATE corretta, la linea commentata è quello che sto avendo problemi con, Qual è il modo corretto per tirare l'attributo rel da # calendar-linea da dentro questo. Tutti i tentativi gettano un errore non rilevato in js

Aggiornamento 2

function calendar_picker() { 
var myDate = new Date($("#calendar-inline").attr('rel')); 
    $("#calendar-inline").datepicker({ 

    dateformat: 'yy-mm-dd', 
    defaultDate:myDate, 

Soluzione:

function calendar_picker() { 
var myDate = null; 
if ($("#calendar-inline").attr('rel') != null) { 
    myDate = $.datepicker.parseDate("yy-mm-dd", $("#calendar-inline").attr('rel')); 
    } 
    $("#calendar-inline").datepicker({ 

    dateformat: 'yy-mm-dd', 
    defaultDate:myDate, 

risposta

9

provare questo:

defaultDate: $("#calendar-inline").attr('rel') 

Questo tenterà di tirare la data dal attributo 'rel' e se questo non esiste deve restituire nulla. Quando null viene passato alla data predefinita di datepicker verrà utilizzata oggi come data predefinita.

+0

Questo non funziona, la data deve essere pa rsed e non lo è. Ho provato a mettere manualmente una data in una stringa ed è andata 1 anno prima. – matthewb

+0

Qual è il formato della data nell'attributo rel? Dovresti essere in grado di creare una var come questa: var myDate = new Date ($ ("# calendar-inline"). Attr ('rel')); Se si passa quella variabile nel predefinito Date, dovrebbe funzionare ... in caso contrario, si può pubblicare qualche html? –

+0

I dati rel sono "2009-11-19" quando passo ciò che suggerisci vedi sopra per il nuovo codice js, ora è appena impostato su default, non importa cosa ci sia nel rel. – matthewb

0

La tua domanda è un po 'poco chiaro - quello che sto assumendo è che la vostra problema si verifica sulla riga commentata.

Se è corretto, allora penso che il tuo problema sia con "questo". Non sono abbastanza sicuro di cosa ti aspetti da "questo", ma all'interno della funzione sarà l'oggetto finestra.

Se sono sulla traccia sbagliata, aggiorna la domanda con ulteriori informazioni.

0

questo funziona per me:

var nowDate = new Date(year, month, day, hours, minutes, seconds, milliseconds); 

poi nel calendario, si imposta:

defaultDate: nowDate; 
8

possiamo impostare data predefinita da questo:

<script type="text/javascript"> 
$(function() {    
    $("#date").datepicker({ 
     changeMonth: true, 
     changeYear: true, 
     yearRange: '1920:2010', 
     dateFormat : 'dd-mm-yy', 
     defaultDate: new Date(2000,01,01) 
    }); 
}); 
</script> 

Vedi http://jqueryui.com/demos/datepicker/#option-defaultDate

+0

'' (2000,01,01) 'dovrebbe essere' (2000,1,1) ' – zsitro