2016-01-07 13 views
8

Próbuję formularza sprawdzania poprawności z HTML 5, jak opisano w developer.mozilla.org Data form validation (developer.mozilla.org). Testuję to w przeglądarce Chrome. Dwa pytania.Sprawdzanie poprawności formularza HTML 5 dla danych wejściowych datetime-local

  1. Nie mogę przepustkę formularz z checkValidity() kiedy mam typ wejściowy datetime-local. Format wejściowy datetime-local jest dość ścisły (Chrome wymusza to w określonym formacie), ale po prostu nie przechodzi. Czemu?
  2. To pole datetime-local NIE powinno być polem wymaganym. Jak mogę go przekazać, gdy użytkownik nie określi danych wejściowych?
+2

Proszę pokazać swój kod w 'jsbin.com 'lub' jsfiddle.net' – Vuong

+2

Nie można powtórzyć problemu, proszę dodać kod do samego pytania. Najbliżej, do którego doszedłem, aby powtórzyć problem, było wypełnienie tylko części pola, pozostawiając połowę pola pustego (ale błąd sprawdzania poprawności wynikał z tego, że pole było niekompletne, nie dlatego, że było to wymagane). –

+1

Jestem w rzeczywistości na komórce JQuery , Nie wiem, czy to ma związek z tym. Ale OK, spróbuję ponownie i wstawiam kod na stronę i zobaczę, czy mogę go później powtórzyć. Dzięki. – huggie

Odpowiedz

0

natknąłem się tego problemu w Chrome 46 & chrom 46 beta, gdzie "datetime" feild dopiero wymagane pole (użytkownicy mieli dwie opcje dla formatu wejściowego YYYY-MM-DDTgg: mm: ssTZD i PTDHMS patrz W3C dla formatów wartości i zobaczyć MDN do problemów z kompatybilnością)

więc nie używać

.
<input type="datetime" /> 

czyli

<input type="datetime-local" /> 

użyłem:

<input type="text" /> 

And Date Js do analizowania datę/godzinę użytkownik wprowadzonego

userInput = userInput || 'Thu, 1 July 2004 22:30:00'; 
Date.parse(userInput); 

Ale można pominąć Date.js całkowicie i użyj natywnego kodu JavaScript podobnego do tego: Source (MDN)

var today = new Date(); 
var birthday = new Date('December 17, 1995 03:24:00'); 
var birthday = new Date('1995-12-17T03:24:00'); 
var birthday = new Date(1995, 11, 17); 
var birthday = new Date(1995, 11, 17, 3, 24, 0); 
var unixTimestamp = Date.now(); // in milliseconds 

Również należy pamiętać, że <input> elementy z type="datetime-local" nie są obsługiwane w programie Internet Explorer lub Firefox (zob W3C), ale można spróbować to:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8" /> 
<head> 
<body> 
<script> 
    var input = document.createElement("input"); 
    input.setAttribute("type", "datetime-local"); 
    document.getElementsByTagName("body").appendChild(input); 
</script> 
</body> 
</html> 
+0

Huggie, czy moja odpowiedź ci pomogła? Czy masz coś przeciwko dzieleniu się, jak i w jaki sposób rozwiązałeś problem? –

Powiązane problemy