DOM*_*tor 8 html javascript html5
我有2个输入字段:
日期:
<input type="date" id="currentDate">
Run Code Online (Sandbox Code Playgroud)
时间:
<input type="time" id="currentTime" >
Run Code Online (Sandbox Code Playgroud)
我只是在测试html5的这些新功能.如何在这些字段中设置当前值.我很难通过javascript在这些字段中设置值.
jun*_*ngy 19
您只需value使用相应的格式设置输入字段:
date 是 yyyy-MM-dd
time 是 HH:mm
使用您的示例,您可以执行以下操作:
var date = new Date();
var currentDate = date.toISOString().slice(0,10);
var currentTime = date.getHours() + ':' + date.getMinutes();
document.getElementById('currentDate').value = currentDate;
document.getElementById('currentTime').value = currentTime;
Run Code Online (Sandbox Code Playgroud)
Mis*_*ojo 10
在现代浏览器上,这非常简单:
只需使用 HTML_element .valueAsDate而不是 HTML_element .value
const
myForm = document.querySelector('#my-form')
, dtStr = document.querySelector('#date-time-Str')
, localDt_now =_=>
{
let now = new Date()
now.setMinutes(now.getMinutes() - now.getTimezoneOffset())
now.setSeconds(0) // remove seconds
now.setMilliseconds(0) // remove milliseconds
return now
}
/* ------------------------------------------- *\
* set date & time ! *
\* ------------------------------------------- */
myForm.inDate.valueAsDate = localDt_now() // current date
myForm.inTime.valueAsDate = localDt_now() // current time
/*----------------------------------- Bonus -*\
* some Intl methods to use... *
\*-------------------------------------------*/
const
fxD = // dates Formats
{ ymd : Intl.DateTimeFormat( 0, { year: 'numeric', month: '2-digit', day: '2-digit' })
, hm : Intl.DateTimeFormat( 0, { hour12: false, hour: '2-digit', minute: '2-digit' })
}
, fxD_parts = (d,fx) => fx.formatToParts(d).reduce((o,{type,value})=>(o[type]=value,o),{})
;
/*------------------------------------ Bonus -*\
* reverse action = get date & time values ! *
\*--------------------------------------------*/
// add TZ offset to get locale values
const getLocalDt = dt => dt.setMinutes(dt.getMinutes() + dt.getTimezoneOffset())
/*----------------------------------- Bonus -*\
* demo... *
\*-------------------------------------------*/
myForm.onsubmit = e =>
{
e.preventDefault()
let
dt_D = fxD_parts( getLocalDt( myForm.inDate.valueAsDate), fxD.ymd )
, dt_T = fxD_parts( getLocalDt( myForm.inTime.valueAsDate), fxD.hm )
;
dtStr.innerHTML = ` date = ${dt_D.year} - ${dt_D.month} - ${dt_D.day} <br>`
+ ` time = ${dt_T.hour} : ${dt_T.minute}`
}Run Code Online (Sandbox Code Playgroud)
form {
padding : 1em 2em;
}
label {
display : inline-block;
line-height : 1.3em;
margin : 1em .6em;
font-size : .8em;
}
input {
display : block;
margin-bottom : .6em;
}Run Code Online (Sandbox Code Playgroud)
<form id="my-form" method="post" action="#">
<label>
Date:
<input name="inDate" type="date">
</label>
<label>
Time:
<input name="inTime" type="time">
</label>
<br><br>
<button type="submit">get Date & time (Bonus)</button>
</form>
<p id="date-time-Str">d=??? t=???</p>Run Code Online (Sandbox Code Playgroud)
(以前的版本)
Run Code Online (Sandbox Code Playgroud)// just my preference to access form elements by names const myForm = document.querySelector('#my-Form') // 1: get local date and time values let sysDate = new Date() , userDate = new Date(Date.UTC(sysDate.getFullYear(), sysDate.getMonth(), sysDate.getDate(), sysDate.getHours(), sysDate.getMinutes(), 0)); // 2: set interface values ! myForm.currentDate.valueAsDate = userDate myForm.currentTime.valueAsDate = userDateRun Code Online (Sandbox Code Playgroud)<form action="xxx" id="my-Form"> <input type="date" name="currentDate"> <br><br> <input type="time" name="currentTime"> </form>
小智 6
var date = new Date();
var day = date.getDate(),
month = date.getMonth() + 1,
year = date.getFullYear(),
hour = date.getHours(),
min = date.getMinutes();
month = (month < 10 ? "0" : "") + month;
day = (day < 10 ? "0" : "") + day;
hour = (hour < 10 ? "0" : "") + hour;
min = (min < 10 ? "0" : "") + min;
var today = year + "-" + month + "-" + day,
displayTime = hour + ":" + min;
document.getElementById('formdate').value = today;
document.getElementById("formtime").value = displayTime;
Run Code Online (Sandbox Code Playgroud)