2010-11-22 14 views
1

Ich verwende das Ereignis onSelect, um den Mindestwert von EndDate auf den Wert StartDate einzustellen. Ich habe den gleichen Code in mehreren Seiten, aber in einem von ihnen funktioniert es nicht. Wenn ich einen Wert in StartDate auswähle, wird datepicker nicht angezeigt, wenn ich in das Feld EndDate gehe. Die Seiten werden mit Ajax geladen und bearbeitet.jQuery Datepicker onSelect funktioniert nicht

My-Code ist wie folgt:

$(document).ready(function() { 

$("#strStartDate").datepicker({ 
      dateFormat: 'dd/mm/yy', 
      constrainInput: true, 
      firstDay: 1, 
      hideIfNoPrevNext: true, 
      onSelect: function(){ 
       $("#strEndDate").datepicker("option", "minDate", $("#strStartDate").val()); 
      } 
    }); 

    $("#strEndDate").datepicker({ 
      dateFormat: 'dd/mm/yy', 
      constrainInput: true, 
      firstDay: 1, 
      hideIfNoPrevNext: true 
    }); 
}); 

Jede Hilfe ist sehr geschätzt. Vielen Dank im Voraus.

Mit den Ideen hinter Ihre Kommentare habe ich fast das, was zu tun verwalten Ich will

$("#strStartDate").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     constrainInput: true, 
     firstDay: 1, 
     hideIfNoPrevNext: true, 
}); 

$("#strEndDate").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     constrainInput: true, 
     firstDay: 1, 
     hideIfNoPrevNext: true, 
     beforeShow: function (input, inst) { 
      inst.settings.minDate = $("#strStartDate").val(); 
    } 
}); 

Der obige Code schränkt vom Benutzer ein Enddatum kleiner als das Startdatum jedoch setzen, wenn bereits ein Wert im Ende war Datum, und Sie ändern das Startdatum auf einen Wert größer als das Enddatum, sollte es das Enddatum gleich dem Startdatum festlegen. Dies ist, was ich versuche, unten in meinem frühen Code mit dem Code zu tun

onSelect: function(){ 
     $("#strEndDate").datepicker("option", "minDate", $("#strStartDate").val()); 
    } 

Jede Idee, wie dies die Instanz zu tun und nicht erneut initialisiert werden?

Antwort

0

Ich bin mir nicht sicher, dass dies Ihr Problem lösen, aber diese versuchen:

$("#strStartDate").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     constrainInput: true, 
     firstDay: 1, 
     hideIfNoPrevNext: true, 
     onSelect: function(selectedDate){ 
      $("#strEndDate").datepicker("option", "minDate",selectedDate); 
     } 
}); 
+0

Leider ist dieses – user516514

0

Dies tun sollten, was Sie brauchen:

function fromTo(startDate, endDate) { 
    $(startDate + ", " + endDate).datepicker({ 
    onClose: function (dateText, inst) { 
     if ("#" + inst.id === startDate) { 
     $(endDate).datepicker("option", "minDate", $(startDate).val()); 
     } 
    }, 
    beforeShow: function (input, inst) { 
     if (inst.id == $(endDate).get(0).id) { 
     inst.settings.minDate = $(startDate).val(); 
     } 
    }, 
    dateFormat: 'mm/dd/yy', 
    constrainInput: true, 
    firstDay: 1, 
    hideIfNoPrevNext: true 
    }); 
} 

Verwenden fromTo("#startdate", "#enddate");

+0

nicht funktioniert ich nicht wirklich bekommen, wie diese Funktion zu nutzen. Wann wird diese Funktion aufgerufen? – user516514

+0

Ok ... Mit der Idee hinter deinem Code bin ich einen Schritt weiter gegangen – user516514

1

Ok Jungs ... Gute Nachrichten ... zumindest für mich :)

$("#strStartDate").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     constrainInput: true, 
     firstDay: 1, 
     hideIfNoPrevNext: true, 
     onSelect: function(){ 
      if ($("#strStartDate").val() > $("#strEndDate").val()){ 
       $("#strEndDate").val($("#strStartDate").val()); 
      } 
     } 
}); 

$("#strEndDate").datepicker({ 
     dateFormat: 'dd/mm/yy', 
     constrainInput: true, 
     firstDay: 1, 
     hideIfNoPrevNext: true, 
     beforeShow: function (input, inst) { 
      inst.settings.minDate = $("#strStartDate").val(); 
    } 
}); 

Dies ist der endgültige Code. Es erstellt nur eine Instanz jedes Datapickers und führt die erforderliche Überprüfung durch, wenn Sie es als Datumsauswahl verwenden möchten.

Nochmals vielen Dank für Ihre Richtlinien