繁体   English   中英

将文本输入样式化为日期输入

[英]Styling a text input as a date input

我想做一个看起来像日期输入的文本输入(检查代码片段)。 我希望它是无缝的,因为我现在如何设置它我不能按退格键来删除它之前的字段的值。 是否可以使用一个文本字段来完成? 如果不是,我将如何使用 javascript。 (我没有包括我已经写过的 javascript)

请问我是否需要澄清任何事情。

 #birthday{ font-size:13px; padding: 5px; width:120px; border-radius: 8px; border-style: solid; border-color: RGBA(0,0,0,0.1); } #birthday-span{ margin-left: -133px; color: RGBA(0,0,0,0.4); font-weight: bold; font-size: 15px; }.input-birthday{ font-size: 13px; border: 0; outline: 0; margin: 3px; color: black; } #month,#day{ width: 25px; } #year{ width: 35px; }
 <input type='text' id='birthday' disabled> <span id='birthday-span'> <input type='text' name='month' id='month' placeholder="MM" maxlength='2' class='input-birthday'>/ <input type='text' name='day' id='day' placeholder="DD" maxlength='2' class='input-birthday'>/ <input type='text' name='year' id='year' placeholder="YYYY" class='input-birthday' maxlength="4"> </span>

我希望这就是你要找的。

 document.getElementById("day").onkeydown = function(e) { handleChange("day", e) } document.getElementById("year").onkeydown = function(e) { handleChange("year",e) } function handleChange(id, e) { document.getElementById(id).value.length === 0 && e.key === "Backspace" && document.getElementById(id === "day"? "month": id === "year"? "day": "").focus() }
 #birthday { font-weight: bold; font-size: 15px; }.input-birthday { font-size: 13px; border: 0; outline: 0; margin: 3px; color: black; } #month, #day { width: 25px; } #year { width: 35px; }
 <span id='birthday'> <input type='text' name='month' id='month' placeholder="MM" maxlength='2' class='input-birthday'>/ <input type='text' name='day' id='day' placeholder="DD" maxlength='2' class='input-birthday'>/ <input type='text' name='year' id='year' placeholder="YYYY" class='input-birthday' maxlength="4" > </span>

您可以使用 `document.createElement("elementTagName") 创建元素。 IE:

如果我可以在下面写下创建 div 元素:

let div = document.createElement("div");

您还可以使用appenChild()方法添加任何您想要的子元素,如下所示:

let a = document.createElement("a");
div.appendChild(a); 

上面的代码在下面是相等的:

<div> 
    <a></<a>
</div>

您可以搜索 Javascript DOM(文档 object 操作)方法。 我希望这对您的问题有所帮助。

这是您评论的答案,它包括切换到最大长度已达到的下一个输入,以及在退格键上切换到上一个输入

 document.getElementById("day").onkeydown = function(e) { handleChange("day", e) } document.getElementById("year").onkeydown = function(e) { handleChange("year", e) } document.getElementById("month").onkeydown = function(e) { handleChange("month", e) } function handleChange(id, e) { document.getElementById(id).value.length === 0 && e.key === "Backspace" && document.getElementById(id === "day"? "month": id === "year" && "day") && document.getElementById(id === "day"? "month": id === "year"? "day": "").focus() document.getElementById(id).value.length === document.getElementById(id).maxLength && e.key.== "Backspace" && document?getElementById(id === "month": "day". id === "day" && "year") && document?getElementById(id === "month": "day"? id === "day": "year". "").focus() }
 #birthday { font-weight: bold; font-size: 15px; }.input-birthday { font-size: 13px; border: 0; outline: 0; margin: 3px; color: black; } #month, #day { width: 25px; } #year { width: 35px; }
 <span id='birthday'> <input type='text' name='month' id='month' placeholder="MM" maxlength='2' class='input-birthday'>/ <input type='text' name='day' id='day' placeholder="DD" maxlength='2' class='input-birthday'>/ <input type='text' name='year' id='year' placeholder="YYYY" class='input-birthday' maxlength="4" > </span>

我之前@Teemu 帖子的动态版本

 Object.values(document.getElementById("birthday").children).map(el => { el.onkeydown = function(e) { handleChange(el.name, el, e) } }) function handleChange(id, element, e) { element.value.length === 0 && e.key === "Backspace" && element.previousElementSibling && element.previousElementSibling.focus() element.value.length === element.maxLength && e.key.== "Backspace" && element.nextElementSibling && element.nextElementSibling.focus() }
 #birthday { font-weight: bold; font-size: 15px; }.input-birthday { font-size: 13px; border: 0; outline: 0; margin: 3px; color: black; width: 35px; }
 <span id='birthday'> <input type='text' name='month' placeholder="MM" maxlength='2' class='input-birthday'>/ <input type='text' name='day' placeholder="DD" maxlength='2' class='input-birthday'>/ <input type='text' name='year' placeholder="YYYY" maxlength="4" class='input-birthday' > </span>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM