Hay dos Jquery datepickers en uso, StartDate y EndDate

<input id="StartDate" class="datepicker setNext hasDatepicker" type="text" value="13/02/2015" name="StartDate">
<input id="EndDate" class="datepicker hasDatepicker" type="text" value="15/02/2015" name="EndDate">

Cuando el StartDate datepicker es seleccionado quiero que el EndDate datepickers a ser el StartDate + 1 Día, y por la cual las fechas anteriores no pueden ser seleccionadas en EndDate que están en StartDate.

Tengo este código:

$(function () {
    $(".datepicker").datepicker({
        dateFormat: 'dd/mm/yy',
        onSelect: function( selectedDate ) {
            if(this.id == 'StartDate') {
                var minDate = selectedDate + 1;
                $('#to').datepicker("option", "minDate", minDate);

            }
        }
   });
});

Así se llega a los onSelect ok, pero, a continuación, añadir 1 a la fecha no funciona (acabo de llegar de la datestring con un 1 en la final, por lo que «31/12/20141′).

También he intentado lo siguiente en el OnSelect, suponiendo que selectedDate fue un string no es un tipo de fecha:

                var minDate = new Date(selectedDate);
                var tomorrow = new Date();
                tomorrow.setDate(minDate.getDate() + 1);
                $('#to').datepicker("option", "minDate", tomorrow);

minDate termina siendo una Fecha no válida, como se hace en la mañana. No puedo trabajar fuera de cómo para fijar las fechas de la cadena. Se trata de algo a lo largo de las líneas de:

var minDate = selectedDate.getDate();

Me pone un «Uncaught TypeError: indefinido no es una función’.

Usando JQuery 1.11.1, reino unido fecha de formatos de dd/mm/aaaa.

  • ¿Qué sucede si se intenta algo como esto: var fecha2 = $(‘#StartDate’).datepicker(‘getDate’, ‘+1d’); no te van a obtener una fecha válida para la fecha2?
  • El análisis de una cadena a una fecha no usar su pantalla de formato, por lo que dd/mm/yy devuelve fechas no válidas en new Date(selectedDate)
InformationsquelleAutor UglyTeapot | 2014-12-31

3 Comentarios

  1. 1

    Si quieres cambiar el selector de fecha de fecha de otro datepicker la adición de un día, usted puede hacer algo como esto:

    Nota que selectedDate es en formato dd/mm/AAAA, que no es una cadena de formato de fecha para uso en la Fecha del constructor. Usted tiene entonces a analizar.

            var arr = selectedDate.split("/");
            var date = new Date(arr[2]+"-"+arr[1]+"-"+arr[0]);
            var d = date.getDate();
            var m = date.getMonth();
            var y = date.getFullYear();
            var minDate = new Date(y, m, d + 1);
            $("#EndDate").datepicker('setDate', minDate);

    Aquí tienes un ejemplo de trabajo el violín

    • pruebe el ejemplo y ver si funciona o no
    • Lo dicho… La biblioteca de Javascript es una locura 🙂
    • Yo sé 🙂 Gracias!
    • Añadido mi propia versión, con getDate() + 1, que parece menos loco (pero sí, el tuyo también funciona) 🙂
    • Eliminado mi propia respuesta como en el conjunto de setDate(getDate() + 1) aparece roto.
    • El problema que tenía era como sigue. Si no crea el objeto Date con el año y el mes seleccionado, vamos a suponer que usted desea utilizar corriente mes y año, en 12 y 2014 que vi. Esta es la razón por la que la «rareza» que mencioné en mi post no es una rareza en todo. Crear el objeto con el mes y el año deseado y agregar un día para el día. El objeto es lo suficientemente inteligente como para darse cuenta de que el 29 de medio mes en curso+1 y restablece el día 1 también. Bueno, yo creo que funciona de esa manera.
    • Perfecto, gracias! Mientras yo estaba consciente de que tenía el formato de la fecha, me olvidé de que el analizador no les guste el nuevo formato!
    • siguiendo con su respuesta +1. Aprendí un par de cosas más para evitar en JS 🙂

  2. 1

    aquí estoy dejando que el usuario seleccione el intervalo de 10 días solo..se puede modificar de acuerdo a su requerimiento.

    JS:

    $(document).ready(function() {
        var minDate ;
        var maxDate;
        var mDate
        var j = jQuery.noConflict();
        j( "#startTime" ).datepicker({
        onSelect: function() {
        minDate = j( "#startTime" ).datepicker("getDate");
        var mDate = new Date(minDate.setDate(minDate.getDate()));
        maxDate = new Date(minDate.setDate(minDate.getDate() + 10));
    j("#endTime").datepicker("setDate", maxDate);
    j( "#endTime" ).datepicker( "option", "minDate", mDate);
    j( "#endTime" ).datepicker( "option", "maxDate", maxDate);
    }
    });
    var tdate = new Date();
    var ddate = new Date(tdate.setDate(tdate.getDate() + 10));
    j("#startTime").datepicker("setDate", new Date());
    j( "#endTime" ).datepicker();
    j("#endTime").datepicker("setDate",ddate);
      });

    HTML:

     <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
      <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
      <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script><div>Please Select Dates:</div>
    	 <p>Strat Date:<input id ="startTime" type="text" ></input></p>
    	 <p>End Date:<input id ="endTime" type="text" ></input></p>

  3. 0

    Puede utilizar el setDate y getDate.

    Ejemplo:

    <input id="StartDate" class="datepicker setNext hasDatepicker" type="text" value="13/02/2015" name="StartDate">
    <script>
    function convertInputtoDate(){
        var input = document.getElementById("StartDate").value;
        var date = input.split('/');
        var selectdate = new Date(date[2], date[1], date[0]);
    
        return selectdate;
    }
    var today = convertInputtoDate();
    var tomorrow = new Date(convertInputtoDate());
    tomorrow.setDate(today.getDate() + 1);
    alert('Today : ' + today + ' Tommorow :' + tomorrow.toLocaleString());
    </script>

    Si quieres cambiar el formato de fecha, uso:

    tomorrow.toLocaleString(); //output will be : d/m/Y H:M:S

    Y convertir su entrada hasta la fecha:

    function convertInputtoDate(){
        var input = document.getElementById("StartDate").value;
        var date = input.split('/');
        var selectdate = new Date(date[2], date[1], date[0]);
    
        return selectdate;
    }
    • Cierto, pero usted necesita para aplicar esto a la pregunta específica como el dd/mm/aa formato de fecha es también un problema.
    • Se puede utilizar mañana.toLocaleString()
    • Que aún no coincide con la pregunta… Usted necesita para tomar la fecha de inicio, no hoy. Trate de completar un JSFiddle.
    • Usted necesita asegurarse de que su respuesta coincide con la pregunta. Sugieren crear un JSFiddle coincidente con el ejemplo mostrado.

Dejar respuesta

Please enter your comment!
Please enter your name here