ratzekahl1
Goto Top

Datepicker jquery stellt März falsch da

Guten Morgen,
ich habe ein php-Script, welches den jquerydatepicker nutzt. Solange ich alles in Englisch mache, ist es klasse.
Nur deutsch mag er nicht.
Ich habe die Locasisation eingebunden und alle Scripte als utf-8 gespeichert.
Der meta tag ist auch drin.
Aber bei März bekomme ich statt dem "ä" eine Raute mit Fragezeichen.
Spasseshalber habe ich an die Monate ein "xxx" angehängt. Leider passiert nichts. Die Monate bleiben bei Januar, Februar, M?rz, April usw.

Dann spaßeshalber die französische genommen. Wunderbar geht. Also die fransösischen Namen durch deutsche ersetzt.
Funktioniert auch. Nur ist der Monat auf den aktuellen als Minimum beschränkt. Also im Script Min-Monat statt "0", "-2" gesetzt. Alternativ -2 M und - 60 d gesetzt.
Dann kann ich zwar zwei Monate in die Vergangenheit gehen, aber danach springt er zurück auf die englischen Namen.
Also ich öffne den Datepicker. Wunderbar März 2024, zurück February 2024. Vor March 2024.

Andere de-Localisation genommen. Keine Änderung.
Hier etwas code:
$(function() {
  $('#datepicker').datepicker({  
       prevText: '<zurück', prevStatus: '',  
        prevJumpText: '<<', prevJumpStatus: '',  
        nextText: 'Vor>', nextStatus: '',  
        nextJumpText: '>>', nextJumpStatus: '',  
        currentText: 'heute', currentStatus: '',  
        todayText: 'heute', todayStatus: '',  
        clearText: '-', clearStatus: '',  
        closeText: 'schließen', closeStatus: '',  
        monthNames: ['Januar','Februar','Märzxxx','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'],  
      showMonthAfterYear: false,
      showOn: 'both',  
      buttonImage: 'media/img/calendar.png',  
      buttonImageOnly: true,
      dateFormat:'d MM, y'  
    } 
  );

});

Ein header-file:
 <meta http-equiv="Content-type" content="text/html; charset=utf8" />  
...
script src="./js/jquerymini.js" type="text/javascript" charset="UTF-8"></script>  
<script src="./js/jquerymini2.js" type="text/javascript" charset="UTF-8"></script>  
<link rel="stylesheet" href="../maincss/jquerycss.css"  type="text/css" media="all" />  

<script src="./js/jquery-datepicker-de.js" type="text/javascript" charset="UTF-8"></script>  
<link rel="stylesheet" type="text/css" href="../maincss/datepicker.css">  

Das Formular:
<script type="text/javascript">  
          $(function() {$("#datepicker<?php echo $anzahlteileinsaetze;?>").datepicker();});  
</script>
    <tr>
    <td class="datenzelle2">Datum des Teil-Einsatzes <?php echo $anzahlteileinsaetze;?></td>  
    <td class="datenzelle2"><?php echo '<input type="text" name="datum[]" size="75" value="'.$value;?>" id="datepicker<?php echo $anzahlteileinsaetze;?>"  class="textfeld" readonly></td>  
  </tr> 

Der Datepicker soll mehrfach genutzt werden. Also sowas wie warenkorb1, warenkorb2, warenkorb3. => warenkorb1 vom 02.03.24, warenkorb2 vom 4.03.24, warenkorb3 vom 07.03.24

Any idea?
Gruß
Oliver

Content-ID: 91746015257

Url: https://administrator.de/contentid/91746015257

Ausgedruckt am: 21.11.2024 um 19:11 Uhr

godlie
godlie 08.03.2024 um 11:54:09 Uhr
Goto Top
Hallo,

ich glaube dein Problem liegt in der Erstellung des Datepickers in der $(function)
 $(function() {$("#datepicker<?php echo $anzahlteileinsaetze;?>").datepicker();});  
hier erzeugt du einfach nur eine DatePicker Instanz ohne Config.

Du müsstest aus deiner, im ersten code, gebauten sache, eine Function machen welche dann auf die ID einfach den Datepicker erzeugt.

function createPicker(id){
$('#' + id).datepicker({    
       prevText: '&#x3c;zurück', prevStatus: '',    
        prevJumpText: '&#x3c;&#x3c;', prevJumpStatus: '',    
        nextText: 'Vor&#x3e;', nextStatus: '',    
        nextJumpText: '&#x3e;&#x3e;', nextJumpStatus: '',    
        currentText: 'heute', currentStatus: '',    
        todayText: 'heute', todayStatus: '',    
        clearText: '-', clearStatus: '',    
        closeText: 'schließen', closeStatus: '',    
        monthNames: ['Januar','Februar','Märzxxx','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'],    
      showMonthAfterYear: false,
      showOn: 'both',    
      buttonImage: 'media/img/calendar.png',    
      buttonImageOnly: true,
      dateFormat:'d MM, y'    
    } 
  );
}

Aber eigentlich müsste es reichen wenn du mit dem hier, den DatePicker erzeugst, dann sollte er das Lccale verwenden

 $(function() {$("#datepicker<?php echo $anzahlteileinsaetze;?>").datepicker($.datepicker.regional[ "de" ]);});  
grüße
11078840001
Lösung 11078840001 08.03.2024 aktualisiert um 13:06:20 Uhr
Goto Top
Klappt hier so problemlos: Testdatei:
<!DOCTYPE HTML>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
    <title>DatePicker</title>
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">  
    <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>  
    <script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js" integrity="sha256-lSjKY0/srUM9BE3dPm+c4fBo1dky2v27Gdjm2uoZaL0=" crossorigin="anonymous"></script>  
  </head>
  <body>
    <p>Date: <input type="text" id="datepicker"></p>  
    <script>
      $('#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'],  
        dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],  
        dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],    
        dateFormat:'d MM, y'  
      });
    </script>
  </body>
</html>
https://jsfiddle.net/tn1u60gy/

screenshot

Liefert dein Webserver per PHP denn in überhaupt UTF-8 aus? (php.ini => default_charset = "utf-8")
ratzekahl1
ratzekahl1 11.03.2024 um 09:22:43 Uhr
Goto Top
@11078840001 Ich denke das grundsätzlich utf8 funktioniert. Da ich pdfs mit Müller.pdf genierieren kann und auch Herr Müller geht als Jäger und Haßo in den Wald ohne Probleme dargestellt wird.

@godie Hm, ich bin kein Javascript-Spezi. Die Idee war einfach, dass man einfach datepicker1, datepicker2, datepicker3 usw. "erzeugt" und daraus dann die Variablen warenkorb1, warenkorb2, warenkorb3
Notfalls über n-Funktionen (n=Anzahl Teileinsätze).

@11078840001
 <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>    
    <script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js" integrity="sha256-lSjKY0/srUM9BE3dPm+c4fBo1dky2v27Gdjm2uoZaL0=" crossorigin="anonymous"></script>  
Ok, das könnte es sein, das einfach meine jqueri-ui zu alt oder fehlerhaft sind. Allerdings bin ich kein Freund von Online-Links. Weil da habe ich keinen Einfluss drauf, wenn was geändert wird, das Projekt eingestellt wird oä.

Vielen Dank erstmal.
11078840001
11078840001 11.03.2024 aktualisiert um 09:42:30 Uhr
Goto Top
Allerdings bin ich kein Freund von Online-Links.
Das war ja ausschließlich für das Beispiel zum ausprobieren! Kannst du ja jederzeit runterladen und lokal nutzen ...
Wobei ich persönlich nicht mehr auf jQuery setze sondern alles nur noch mit eigenem JavaScript mache, genau aus dem Grund den du gerade erfährst, nämlich die konsequenten Inkonsistenzen der jQuery Versionen untereinander.
ratzekahl1
ratzekahl1 17.03.2024 aktualisiert um 10:41:03 Uhr
Goto Top
Hallo 11078840001 ,
Ok, da waren alte Js Fetzen drin, nun tuts es grundsätzlich.
Allerdings habe ich nun die Scripte runtergladen und eingebunden. Jetzt ist wieder Essig mit der Funktionalität...
Ist doch nur Link aufrufen, Datei kopieren in ein js-File und Verlinkung ändern, oder nicht?
ratzekahl1
ratzekahl1 17.03.2024 um 12:06:28 Uhr
Goto Top
Mein Fehler. Tuts. Vielen Dank!