Masalah utama ialah saya boleh memilih Isnin hingga Ahad, tetapi saya ingin mengehadkan hari Selasa, Khamis, Sabtu dan Ahad dan hanya pilih Isnin, Rabu dan Jumaat Ini adalah kod yang saya cuba tetapi saya sebenarnya tidak tahu mengapa ia tidak berfungsi:
Terima kasih! ! ! !
<form action="insertar_reserva_tarde.php" method="POST"> <label for="fecReserva">Día:</label> <input type="date" name="fecReserva" id="fecReserva" min="2023-06-15" max="2023-07-15"required> <br> <label for="horIniReserva">Hora de inicio:</label> <select name="horIniReserva" id="horIniReserva"> <option value="17">17:00</option> <option value="18">18:00</option> <option value="19">19:00</option> <option value="20">20:00</option> </select> <br> <label for="horFinReserva">Hora de fin:</label> <select name="horFinReserva" id="horFinReserva"> <option value="18">18:00</option> <option value="19">19:00</option> <option value="20">20:00</option> <option value="21">21:00</option> </select> <br> <input type="hidden" name="pista" value="1"> <input type="hidden" name="idHorario" value="1"> <input type="submit" value="Reservar"> </form> <?php if(isset($_POST['fecReserva'])){ $date = strtotime($_POST['fecReserva']); $dayOfWeek = date('N', $date); // obtiene el número del día de la semana (1 = lunes, 2 = martes, etc.) if($dayOfWeek == 1 || $dayOfWeek == 3 || $dayOfWeek == 5){ echo "<p>La fecha seleccionada es el ".date('d/m/Y', $date)."</p>"; } else { echo "<p>Sólo se permiten reservas en Lunes, Miércoles y Viernes.</p>"; } } ?> <script>// Everything except weekend days const validate = dateString => { const day = (new Date(dateString)).getDay(); if (day==2 || day==4 || day==6 || day==0 ) { return false; } return true; } // Sets the value to '' in case of an invalid date document.querySelector('input').onchange = evt => { if (!validate(evt.target.value)) { evt.target.value = ''; } } </script>
Tujuannya untuk memilih Isnin, Rabu dan Jumaat sahaja
Masalah anda nampaknya ialah anda melampirkan pendengar kepada peristiwa perubahan input dan kemudian mengembalikan palsu kepada acara itu.
Jika anda hanya mahu memilih hari ganjil (berdasarkan nombor hari ECMAScript), fungsi tersebut hanya mengembalikan hasil
!!(dayNum % 2)
.Nilai tarikh jenis input ialah cap masa dalam format YYYY-MM-DD, ia akan dihuraikan sebagai UTC, jadi jika menggunakan
new Date(value)
anda perlu mendapatkan tarikh UTC.Logik digambarkan di bawah melalui paparan mesej yang sengaja membatalkan penyerahan borang, dengan itu memaparkan kejayaan dan kegagalan tanpa penyerahan.
Terdapat banyak cara lain untuk mencapai hasil yang sama, contohnya anda boleh menggunakan valueAsDate dan bukannya memanggil pembina Tarikh. Anda juga boleh menggunakan pelbagai tarikh yang dibenarkan atau tidak dibenarkan dan mengujinya, dsb.