我正在尝试添加输入日期字段的功能,以便当用户输入数字时,斜杠"/"会自动添加.
所以假设我有以下html:
<input type="text" id="fooDate" />
Run Code Online (Sandbox Code Playgroud)
假设我有以下javascript:
var dateField = document.getElementById("fooDate");
dateField.onkeyup = bar;
Run Code Online (Sandbox Code Playgroud)
应该bar是什么?
到目前为止,最好的谷歌搜索结果是:
function bar(evt)
{
var v = this.value;
if (v.match(/^\d{2}$/) !== null) {
this.value = v + '/';
} else if (v.match(/^\d{2}\/\d{2}$/) !== null) {
this.value = v + '/';
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
另外 - 我知道在你打字的时候输入斜线.滚动它:p
Chr*_*ray 21
更新/编辑:显然,目前最简单的解决方案是使用广泛的HTML5支持<input type="date" name="yourName">.
对于抱怨它不能容纳退格或粘贴的人,我修改了原文:
//Put our input DOM element into a jQuery Object
var $jqDate = jQuery('input[name="jqueryDate"]');
//Bind keyup/keydown to the input
$jqDate.bind('keyup','keydown', function(e){
//To accomdate for backspacing, we detect which key was pressed - if backspace, do nothing:
if(e.which !== 8) {
var numChars = $jqDate.val().length;
if(numChars === 2 || numChars === 5){
var thisVal = $jqDate.val();
thisVal += '/';
$jqDate.val(thisVal);
}
}
});
Run Code Online (Sandbox Code Playgroud)
`
工作小提琴:https://jsfiddle.net/ChrisCoray/hLkjhsce/
小智 5
这是一种简单的方法:
Date: <input name=x size=10 maxlength=10 onkeyup="this.value=this.value.replace(/^(\d\d)(\d)$/g,'$1/$2').replace(/^(\d\d\/\d\d)(\d+)$/g,'$1/$2').replace(/[^\d\/]/g,'')">Run Code Online (Sandbox Code Playgroud)
这是一个小提琴:https://jsfiddle.net/y6mnpc1j/
处理退格、删除、粘贴、长按。
let $jqDate = $('.date-slashes');
$jqDate.bind('keyup', function(ev) {
if (ev.which !== 8) {
let input = $jqDate.val();
let out = input.replace(/\D/g, '');
let len = out.length;
if (len > 1 && len < 4) {
out = out.substring(0, 2) + '/' + out.substring(2, 3);
} else if (len >= 4) {
out = out.substring(0, 2) + '/' + out.substring(2, 4) + '/' + out.substring(4, len);
out = out.substring(0, 10)
}
$jqDate.val(out)
}
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<input name="dob" class="date-slashes" type="tel" maxlength="10" placeholder="mm/dd/yyyy">Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34929 次 |
| 最近记录: |