嗨我有一个只允许数字和斜线的功能,但我的问题是它不是让我输入我想要的数字小键盘中的任何数字吗?
这里的任何人都可以帮忙:
function CheckDate(){
document.getElementById('txtbox').onkeydown = function(evt) {
var charCode = (evt.which) ? evt.which : evt.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57) && charCode != 191)
return false;
return true;
}
}
还是有更好的方法可以做到这一点..我需要它去DD/MM/YYYY
所以允许斜线和数字+数字键盘。
答案 0 :(得分:0)
试试这段代码:
function handleInputKey(e)
{
if (!e)
{
var e = window.event;
}
//allow only numeric input
//48-57 and 96-105 (keyboard left and numpad)
if ( ((e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode == 47) && (!e.shiftKey && !e.altKey && !e.ctrlKey) ))
{
return true;
}
else
{
e.preventDefault();
return false;
}
}
document.getElementById('txtbox').addEventListener("keypress", handleInputKey, false);
&#13;
Please input date in DD/MM/YYYY format.<br />
<input id="txtbox" maxlength="10" placeholder="example: 01/01/1970">
&#13;
答案 1 :(得分:0)
如果您希望用户输入日期,请使用:
<input type="date" />
&#13;
支持浏览器将为用户提供日历,方便用户选择。
在服务器端,您将收到标准YYYY-MM-DD格式的日期。
答案 2 :(得分:0)
找到了我的答案..还有charCode为numpads没有看到它
http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes
WOOP。
答案 3 :(得分:0)
尝试使用此示例作为使用blur
事件和RegExp
:
var txtbox = document.getElementById('txtbox');
var mask = 'DD/MM/YYYY';
txtbox.value = mask;
txtbox.onfocus = function(e) {
if (mask === txtbox.value) { //put mask when no value is entered
txtbox.value = '';
}
};
var ptrn = /([0-3][0-9]\/)([0|1][1-9]\/)\d{4}/;//RegExp date pattern dd/mm/yyyy
txtbox.onblur = function(e) {
var val = txtbox.value;
var valid = true;
if (val && !ptrn.test(val)) {//no value or does not matches pattern
valid = false;
}
if(valid) {//date was entered in required pattern
val = val.replace(ptrn, '$2$1$3');//making string in mm/dd/yyyy as required by date constructor
if(!new Date(val)) {//not a valid date object
valid = false;
}
}
if(!valid) {
alert('Invalid date !');
val = '';
}
if ('' === val) { //put mask when no value
txtbox.value = mask;
}
};
&#13;
<input type='text' id='txtbox' maxlength='10' />
&#13;