2011-08-08 36 views
85

Tarih biçiminin html <input type="date"></input> etiketinde ayarlanmasının mümkün olup olmadığını merak ediyorum ... Şu anda yyyy-aa-gg, buna dd-aa-yyyy biçiminde ihtiyacım var.HTML tarih giriş etiketinde tarih biçimi nasıl ayarlanır?

+2

HTML yalnız –

+3

ile hiçbir yolu olası bir yinelenen değil midir [= tarih HTML5 sensör tipi değeri çıkışını Belirleme?] (Http://stackoverflow.com/questions/ 3496241/değerin belirtilmesi-of-bir-html5-input-type-date)? Diyorum ki, * bu * soru * burada * daha büyük olandan daha iyi bir soru var, ama bu * daha büyük * birinin oldukça iyi bir cevabı var. – Arsen7

+0

@Positive LIESSS – Griffin

cevap

1

Bunu kesinlikle bilmiyorum, ancak bunun kullanıcının tarih/saat ayarlarına bağlı olarak tarayıcı tarafından ele alınması gerektiğini düşünüyorum. Bilgisayarınızı bu biçimde tarihler gösterecek şekilde ayarlamayı deneyin.

21

i HTML kullanarak eğer hiçbir çözüm yalnızca
jQuery
kullanmak gerektiğini düşünüyorum olduğunu düşünüyorum uygun jquery eklentisi aslında jQuery Masked Input

-2

yoktur ama kimse bunu desteklemek için rahatsız gibi görünüyor. Haklısınız, <input type="date">. Herhangi biri beni endişelendiriyorsa. http://www.w3schools.com/html/html5_form_input_types.asp

+4

Bu yanıtla birlikte partiye geçmesine rağmen, OP şu anda 'type =" date "' elemanını kullanıyor, bu alandaki tarih biçimini ayarlayıp ayarlamayacaklarını merak ediyorlardı. – Alex

5

jQuery kullanıyorsanız, burada güzel bir basit yöntemini

$("#dateField").val(new Date().toISOString().substring(0, 10)); 

var Veya eski geleneksel bir yolu vardır: tarih değerinin

document.getElementById("dateField").value = new Date().toISOString().substring(0, 10) 
-2

biçimi 'YYYY-MM-DD' olduğunu. Aşağıdaki örnek

<form> 
<input value="2015-11-30" name='birthdate' type='date' class="form-control" placeholder="Date de naissance"/> 
</form> 

Tek ihtiyacınız bu biçimi olması php, asp, yakut ya da her türlü tarih biçimlendirmek olduğunu bakın.

9

Yapmıyorsunuz. Öncelikle, sorunuz belirsizdir - kullanıcıya görüntülendiği biçimi mi yoksa web sunucusuna iletilme biçimini mi kastediyorsunuz?

Kullanıcıya gösterilme biçimini kastediyorsanız, bu, HTML'de belirttiğiniz hiçbir şey için son kullanıcı arabirimine iner. Genellikle, işletim sistemi yerel ayarlarında ayarlandığı tarih biçimini temel almasını beklerim. Görüntülediği biçim, kullanıcının bulunduğu yer için doğru olanı (genellikle) ve kullanıcının tarih yazmayı/anlamasında kullandığı biçimi (genellikle konuşuyor) olduğu için tercih ettiğiniz biçimle geçersiz kılmanın hiçbir anlamı yoktur.

Sunucuya aktarıldığı biçimi kastediyorsanız, yanlış bir sorunu gidermeye çalışıyorsunuz demektir. Yapmanız gereken, sunucu tarafı kodunu yyyy-aa-gg biçimindeki tarihleri ​​kabul edecek şekilde programlamaktır.

+0

Ne yazık ki, ikinci yorumunuz gerçek dünyada doğru değildir. Chrome ve Opera gibi bazı tarayıcılar, en azından varlıkların _order_'ına saygı duyuyorlar. Örneğin, OS yerel ayarlarım, kısa bir tarih olarak, bu yılın Ağustos ayının ilk gününün _1/8-2016_ olması gerektiğini, ancak Chrome ve Opera'nın bile _01/08/2016_ olduğunu belirtiyor. Safari ve Firefox (en azından OS X'de) gibi diğer tarayıcılar, OS ayarlarını tamamen yok sayar ve ne olursa olsun her zaman _2016-08-16_ gösterir. Kullanıcıların kendi tarih tercihlerini belirleyebildiği bir sitede, bunu geçersiz kılmak kesinlikle mantıklı. –

+0

(Firefox ve Safari ile ilgili notu dikkate almayın… Yorgunum. Hiçbir tarayıcı tarih türünü desteklemiyor. Bu nedenle, mevcut kodumda YYYY-MM- olan değerin temel biçimini gösteriyorlar. DD.) –

+0

Kullanıcıların çoğu, kullanıcıların kendi tercihlerini belirleme veya kendi tercih edilen tarih biçimlerini dünyaya sunmalarını isteyen ekran/giriş tarihi biçimini nasıl değiştireceklerini soruyor mu? İkincisi, dediğim gibi kimsenin yapması gereken bir şey değil, ama ilkinin uygun olup olmadığına dair tartışabilirsin. Ancak, HTML kapsamı dışında sunum amaçlı bir ayar olacaktır. – Stewart

10

Ben

= “tarihi” biçiminde giriş türünü değiştirmek için herhangi bir yolu var mı aynı soruyu veya stackoverflow ilgili soru bulundu?

Basit bir çözüm buldum, Parçacık Biçim veremezsiniz, ancak bunun gibi özelleştirebilirsiniz.

HTML Kodu:

<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> 

CSS Kodu:

#dt{text-indent: -500px;height:25px; width:200px;} 

JavaScript Kodu:

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; 
} 

Çıktı:

enter image description here

01 Olduğu gibi
+0

Daha da iyisi - normal bir giriş üzerinde şeffaf bir tarih kontrolü için css kullanın –

+0

Yanıtınız için teşekkürler, bunun için herhangi bir bağlantınız veya kodunuz varsa, –

+0

numaralı telefonu güncellemem gerekiyor. Bu harika bir seçenektir. –

1

Neden tarih türünü destekleyen tarayıcılarda Tamam çalışmak izin verir ve yine tarih tip

<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"/> 
+0

+4

İhtiyaç açıkça belirtildi: "Dd-mm-yyyy biçiminde buna ihtiyacım var." Bu nasıl yardımcı olur? –

0

desteklemek için henüz ateş gibi diğer tarayıcılarda çalışır diğer özellikler sayesinde html5 tarih kontrolü kullanmayın Bağımlılık olmaksızın uygulamayı temizleyin. 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> 
1
$('input[type="date"]').change(function(){ 
    alert(this.value.split("-").reverse().join("-")); 
}); 
+2

Bazı acil yardımlar sağlayabilen bu kod parçacığı için teşekkür ederiz. Doğru bir açıklama [// meta.stackexchange.com/q/114762] değerini gösteren eğitim değeri * niçin * bu soruna iyi bir çözümdür ve bunu benzer gelecekteki okuyuculara daha yararlı hale getirecektir. ama aynı değil, sorular. Lütfen cevabınızı açıklama eklemek için düzenleyin ve hangi sınırlamaların ve varsayımların geçerli olduğuna dair bir gösterge verin. –