Je me demande s'il est possible de définir le format de la date dans la <input type="date"></input>
balise html ... Actuellement, c'est aaaa-mm-jj, alors que j'en ai besoin au format jj-mm-aaaa.
Je me demande s'il est possible de définir le format de la date dans la <input type="date"></input>
balise html ... Actuellement, c'est aaaa-mm-jj, alors que j'en ai besoin au format jj-mm-aaaa.
Réponses:
Vous ne le faites pas.
Premièrement, votre question est ambiguë - voulez-vous dire le format dans lequel il est affiché à l'utilisateur, ou le format dans lequel il est transmis au serveur Web?
Si vous parlez du format dans lequel il est affiché à l'utilisateur, cela dépend de l'interface de l'utilisateur final, et non de tout ce que vous spécifiez dans le HTML. Habituellement, je m'attendrais à ce qu'il soit basé sur le format de date défini dans les paramètres régionaux du système d'exploitation. Cela n'a aucun sens d'essayer de le remplacer par votre propre format préféré, car le format dans lequel il s'affiche est (généralement) le bon pour les paramètres régionaux de l'utilisateur et le format dans lequel l'utilisateur est habitué à écrire / comprendre les dates.
Si vous parlez du format dans lequel il est transmis au serveur, vous essayez de résoudre le mauvais problème. Ce que vous devez faire est de programmer le code côté serveur pour accepter les dates au format aaaa-mm-jj.
input[type=password]
dit que «l'agent utilisateur doit masquer la valeur afin que les personnes autres que l'utilisateur ne puissent pas la voir», ce qui est tout autant une présentation que de dire que l'agent utilisateur doit présenter la date d'une certaine manière.
J'ai trouvé la même question ou question connexe sur stackoverflow
Existe-t-il un moyen de changer le type d'entrée = format «date»?
J'ai trouvé une solution simple, vous ne pouvez pas donner de format particulaire mais vous pouvez personnaliser comme ça.
Code HTML:
<body>
<input type="date" id="dt" onchange="mydate1();" hidden/>
<input type="text" id="ndt" onclick="mydate();" hidden />
<input type="button" Value="Date" onclick="mydate();" />
</body>
Code CSS:
#dt{text-indent: -500px;height:25px; width:200px;}
Code Javascript:
function mydate()
{
//alert("");
document.getElementById("dt").hidden=false;
document.getElementById("ndt").hidden=true;
}
function mydate1()
{
d=new Date(document.getElementById("dt").value);
dt=d.getDate();
mn=d.getMonth();
mn++;
yy=d.getFullYear();
document.getElementById("ndt").value=dt+"/"+mn+"/"+yy
document.getElementById("ndt").hidden=false;
document.getElementById("dt").hidden=true;
}
Production:
Si vous utilisez jQuery, voici une belle méthode simple
$("#dateField").val(new Date().toISOString().substring(0, 10));
Ou il y a la vieille méthode traditionnelle:
document.getElementById("dateField").value = new Date().toISOString().substring(0, 10)
Pourquoi ne pas utiliser le contrôle de date html5 tel quel, avec d'autres attributs qui lui permettent de fonctionner correctement sur les navigateurs prenant en charge le type de date et fonctionnant toujours sur d'autres navigateurs comme Firefox qui ne prennent pas encore en charge le type de date
<input type="date" name="input1" placeholder="YYYY-MM-DD" required pattern="[0-9]{4}-[0-9]{2}-[0-9]{2}" title="Enter a date in this formart YYYY-MM-DD"/>
Je pense que oui, en HTML, il n'y a pas de syntaxe pour le format JJ-MM-AAAA. Reportez-vous à cette page http://www.java2s.com/Code/SQLServer/Date-Timezone/FormatdateMmmddyyyyhhmmdp.htm . Un peu cela vous aidera. Sinon, utilisez le sélecteur de date javascript.
Je ne sais pas cela avec certitude, mais je pense que cela est censé être géré par le navigateur en fonction des paramètres de date / heure de l'utilisateur. Essayez de configurer votre ordinateur pour afficher les dates dans ce format.
$('input[type="date"]').change(function(){
alert(this.value.split("-").reverse().join("-"));
});
J'ai fait beaucoup de recherches et je ne pense pas que l'on puisse forcer le format du <input type="date">
. Le navigateur sélectionne le format local et, en fonction des paramètres utilisateur, si la langue de l'utilisateur est en anglais, la date sera affichée au format anglais (mm / jj / aaaa).
À mon avis, la meilleure solution est d'utiliser un plugin pour contrôler l'affichage.
Jquery DatePicker semble une bonne option puisque vous pouvez forcer la localisation , le format de la date ...
J'ai trouvé une réponse légèrement différente de tout ce que j'ai lu ci-dessus.
Ma solution utilise un petit peu de JavaScript et une entrée html.
La date acceptée par une entrée donne une chaîne au format «aaaa-mm-jj». Nous pouvons le diviser et le placer correctement en tant que nouvelle Date ().
Voici le HTML de base:
<form id="userForm">
<input type="text" placeholder="1, 2, 3, 4, 5, 6" id="userNumbers" />
<input type="date" id="userDate" />
<input type="submit" value="Track" />
</form>
Voici le JS de base:
let userDate = document.getElementById('userDate').value.split('-'),
parsedDate = new Date((`${userDate[1]}-${userDate[2]}-${userDate[0]}`));
Vous pouvez formater la date comme vous le souhaitez. Vous pouvez créer une nouvelle Date () et récupérer toutes les informations à partir de là ... ou simplement utiliser 'userDate []' pour créer votre chaîne.
Gardez à l'esprit que certaines façons de saisir une date dans «nouvelle date ()» produisent un résultat inattendu. (c'est-à-dire - un jour de retard)
<html>
<body>
<p id="result">result</p>Enter some text: <input type="date" name="txt" id="value" onchange="myFunction(value)">
<button onclick="f()">submit</button>
<script>
var a;
function myFunction(val){
a = val.split("-").reverse().join("-");
document.getElementById("value").type = "text";
document.getElementById("value").value = a;
}
function f(){
document.getElementById("result").innerHTML = a;
var z = a.split("-").reverse().join("-");
document.getElementById("value").type = "date";
document.getElementById("value").value = z;
}
</script>
</body>
</html>
La réponse directe courte est non ou pas prête à l'emploi, mais j'ai mis au point une méthode pour utiliser une zone de texte et du code JS pur pour simuler l'entrée de la date et faire le format que vous voulez, voici le code
<html>
<body>
date :
<span style="position: relative;display: inline-block;border: 1px solid #a9a9a9;height: 24px;width: 500px">
<input type="date" class="xDateContainer" onchange="setCorrect(this,'xTime');" style="position: absolute; opacity: 0.0;height: 100%;width: 100%;"><input type="text" id="xTime" name="xTime" value="dd / mm / yyyy" style="border: none;height: 90%;" tabindex="-1"><span style="display: inline-block;width: 20px;z-index: 2;float: right;padding-top: 3px;" tabindex="-1">▼</span>
</span>
<script language="javascript">
var matchEnterdDate=0;
//function to set back date opacity for non supported browsers
window.onload =function(){
var input = document.createElement('input');
input.setAttribute('type','date');
input.setAttribute('value', 'some text');
if(input.value === "some text"){
allDates = document.getElementsByClassName("xDateContainer");
matchEnterdDate=1;
for (var i = 0; i < allDates.length; i++) {
allDates[i].style.opacity = "1";
}
}
}
//function to convert enterd date to any format
function setCorrect(xObj,xTraget){
var date = new Date(xObj.value);
var month = date.getMonth();
var day = date.getDate();
var year = date.getFullYear();
if(month!='NaN'){
document.getElementById(xTraget).value=day+" / "+month+" / "+year;
}else{
if(matchEnterdDate==1){document.getElementById(xTraget).value=xObj.value;}
}
}
</script>
</body>
</html>
1- Veuillez noter que cette méthode ne fonctionne que pour les navigateurs prenant en charge le type de date.
2- la première fonction du code JS est destinée aux navigateurs qui ne prennent pas en charge le type de date et définissent l'apparence sur une saisie de texte normale.
3- si vous utilisez ce code pour plusieurs entrées de date dans votre page, veuillez changer l'ID "xTime" de l'entrée de texte dans l'appel de fonction et l'entrée elle-même en autre chose et bien sûr utiliser le nom de l'entrée que vous voulez pour le soumettre le formulaire.
4-sur la deuxième fonction, vous pouvez utiliser le format de votre choix au lieu de jour + "/" + mois + "/" + année par exemple année + "/" + mois + "/" + jour et dans la saisie de texte, utilisez un espace réservé ou une valeur comme aaaa / mm / jj pour l'utilisateur lors du chargement de la page.
Pour le formatage en mm-jj-aaaa
aa = date.split ("-")
date = aa [1] + '-' + aa [2] + '-' + aa [0]
Implémentation propre sans dépendances. https://jsfiddle.net/h3hqydxa/1/
<style type="text/css">
.dateField {
width: 150px;
height: 32px;
border: none;
position: absolute;
top: 32px;
left: 32px;
opacity: 0.5;
font-size: 12px;
font-weight: 300;
font-family: Arial;
opacity: 0;
}
.fakeDateField {
width: 100px; /* less, so we don't intercept click on browser chrome for date picker. could also change this at runtime */
height: 32px; /* same as above */
border: none;
position: absolute; /* position overtop the date field */
top: 32px;
left: 32px;
display: visible;
font-size: 12px; /* same as above */
font-weight: 300; /* same as above */
font-family: Arial; /* same as above */
line-height: 32px; /* for vertical centering */
}
</style>
<input class="dateField" id="dateField" type="date"></input>
<div id="fakeDateField" class="fakeDateField"><em>(initial value)</em></div>
<script>
var dateField = document.getElementById("dateField");
var fakeDateField = document.getElementById("fakeDateField");
fakeDateField.addEventListener("click", function() {
document.getElementById("dateField").focus();
}, false);
dateField.addEventListener("focus", function() {
fakeDateField.style.opacity = 0;
dateField.style.opacity = 1;
});
dateField.addEventListener("blur", function() {
fakeDateField.style.opacity = 1;
dateField.style.opacity = 0;
});
dateField.addEventListener("change", function() {
// this method could be replaced by momentJS stuff
if (dateField.value.length < 1) {
return;
}
var date = new Date(dateField.value);
var day = date.getUTCDate();
var month = date.getUTCMonth() + 1; //zero-based month values
fakeDateField.innerHTML = (month < 10 ? "0" : "") + month + " / " + day;
});
</script>
Voici la solution:
<input type="text" id="end_dt"/>
$(document).ready(function () {
$("#end_dt").datepicker({ dateFormat: "MM/dd/yyyy" });
});
j'espère que cela résoudra le problème :)
Le format de la valeur de date est 'YYYY-MM-DD'
. Voir l'exemple suivant
<form>
<input value="2015-11-30" name='birthdate' type='date' class="form-control" placeholder="Date de naissance"/>
</form>
Tout ce dont vous avez besoin est de formater la date en php, asp, ruby ou autre pour avoir ce format.