Hallo
Ich habe zwei Datumsfelder das eine soll einen Kalender bis heute (Also tag des Ausfüllens) und das zweite einen Kalender ab heute anzeigen. Bisher hatte ich das über ein JavaScript gelöst. Ich frage mich nur ob es da nicht eine einfachere Lösung gibt? Da es ja die Option für Textfelder gibt das man ein Datum mittels Kalender Pop-Up eingibt. Nur weiß ich hier nicht wie ich min/max auf das aktuelle Datum einstelle.
Vielen Dank schonmal
Hier der aktuelle Fragebogen, falls das hilft. Ist etwas umständlich aber funktioniert.
V009 und V010 sind einfache Textfelder ohne weitere Einstellungen.
Die zweite Seite ist nötig, da man das Javascript umgehen kann, in dem man einfach ein Datum per Tastatur eingibt das außerhalb des angegebenen Bereichs liegt, das soll natürlich verhindert werden.
<?xml version="1.0"?>
<questionnaire>
<!-- Seite 1 -->
<page ident="V01" intID="11">
<info>Vorraussetzungen</info>
<php intID="168"><![CDATA[
prepare_input('V009_01');
prepare_input('V010_01');
]]></php>
<html intID="173"><![CDATA[
<!-- Diese JavaScript Element stellt den Kalender zum anklicken zur Verfügung -->
<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>
<script>$( function() {
$( "#datepicker" ).datepicker({
monthNames: ['Januar','Februar','März','April','Mai','Juni',
'Juli','August','September','Oktober','November','Dezember'],
monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
'Jul','Aug','Sep','Okt','Nov','Dez'],
dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
maxDate : 0,
dateFormat: "dd.mm.yy"});
$( "#datepicker2" ).datepicker({
monthNames: ['Januar','Februar','März','April','Mai','Juni',
'Juli','August','September','Oktober','November','Dezember'],
monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun',
'Jul','Aug','Sep','Okt','Nov','Dez'],
dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
minDate : 0,
dateFormat: "dd.mm.yy"});
} );
</script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<p><b>Wann genau waren Sie zuletzt bei Ihrem CED Arzt/Ihrer CED Ärztin in der Sprechstunde oder Klinik in Behandlung?</b></p>
<br><br>Datum: <input name="V009_01" type="text" id="datepicker">
<p><b>Wann genau ist Ihr nächster Arztbesuch wegen Ihrer CED geplant? </b></p>
<br><br>Datum: <input name="V010_01" type="text" id="datepicker2">
]]></html>
</page>
<!-- Seite 2 -->
<page intID="6">
<php intID="7"><![CDATA[
// Prüfung des Zeitlichen Abstands in Tagen (Wird noch für was anderes benötigt)
$Diff1 = ceil((time() - strtotime(value('V009_01')))/ 86400)-1;
$Diff2 = ceil((strtotime(value('V010_01')) - time())/ 86400);
// Zeige die Variablen Seite im Debugmodus an
debug('V009_01');
debug('V010_01');
debug($Diff1);
debug($Diff2);
if (trim(value('V009_01')) != '' and $Diff1 < 0) {
markFail('V009_01');
repeatPage('Datumzukunft');
}
if (trim(value('V010_01')) != '' and $Diff1 > 0) {
markFail('V010_01');
repeatPage('Datumvergangenheit');
}
]]></php>
</page>
</questionnaire>
Datumzukunft und Datumvergangenheit sind Textbausteine die angelegt werden müssen damit eine Fehlermeldung angezeigt wird. Durch "div class="feedback"" werden Sie genauso ausgegeben wie andere Fehlermeldungen.
<div class="feedback">
<p>Das von Ihnen eingegebene Datum für ihren <b>nächsten Termin</b>
liegt in der Vergangenheit.<br>
Bitte geben Sie einen Termin ein der in der Zukunft liegt.</p>
</div>