Tengo un campo de selección que contiene campos de opción con horas y minutos como este:
<select name="" id="delyvery-hour"> <option value="18:00">18:00</option> <option value="18:05">18:05</option> <option value="18:15">18:15</option> <option value="18:20">18:20</option> <option value="18:25">18:25</option> <option value="18:30">18:30</option> <option value="18:35">18:35</option> <option value="18:40">18:40</option> <option value="18:45">18:45</option> <option value="18:50">18:50</option> <option value="18:55">18:55</option> <option value="19:00">19:00</option> <option value="19:05">19:05</option> <option value="19:15">19:15</option> <option value="19:20">19:20</option> <option value="19:25">19:25</option> <option value="19:30">19:30</option> <option value="19:35">19:35</option> <option value="19:40">19:40</option> <option value="19:45">19:45</option> <option value="19:50">19:50</option> <option value="19:55">19:55</option> <option value="20:00">20:00</option> </select>Estoy usando jquery para detectar la hora actual y eliminar las opciones frente a la selección con las horas pasadas.
Lo que quiero lograr es mostrar solo las opciones que están 50 minutos por delante.
Por ejemplo si ahora son las 18:00 necesito ver la opción con hora desde las 18:50 o si la hora actual es 19:20 mostrar las opciones desde las 20:10 y etc.
Aquí está el ejemplo: https://codepen.io/7lifedesign/pen/dyvaxWW
var dt = new Date(); var time = dt.getHours(); document.write(time); $('#delyvery-hour option').filter(function(){ return parseInt(this.value,10) < time; }).remove();Esto es bastante sencillo: recupere la fecha actual, agréguele 50 minutos y guárdela en formato hh: mm. Luego filtre sus etiquetas <option> para eliminar cualquier opción cuyo valor sea menor que (en términos de cadena, no numéricamente) el hh:mm dado.
function pad2(n) { if (n < 10) { n = '0' + n; } return n; } var dt = new Date(); dt.setMinutes ( dt.getMinutes() + 50 ); // 50 minutes from now var hhmm = pad2(dt.getHours()) + ':' + pad2(dt.getMinutes()); // eg 18:05 //document.write(hhmm); $('#delyvery-hour option').filter(function(){ return this.value < hhmm; }).remove(); <script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script> <select name="" id="delyvery-hour"> <option value="18:00">18:00</option> <option value="18:05">18:05</option> <option value="18:15">18:15</option> <option value="18:20">18:20</option> <option value="18:25">18:25</option> <option value="18:30">18:30</option> <option value="18:35">18:35</option> <option value="18:40">18:40</option> <option value="18:45">18:45</option> <option value="18:50">18:50</option> <option value="18:55">18:55</option> <option value="19:00">19:00</option> <option value="19:05">19:05</option> <option value="19:15">19:15</option> <option value="19:20">19:20</option> <option value="19:25">19:25</option> <option value="19:30">19:30</option> <option value="19:35">19:35</option> <option value="19:40">19:40</option> <option value="19:45">19:45</option> <option value="19:50">19:50</option> <option value="19:55">19:55</option> <option value="20:00">20:00</option> </select>