我的网站上有一个基本的查询表格,我希望其中一个字段只接受数字和键盘空格(空格)。
目前,电话号码字段仅接受使用以下号码的号码:
if(isNaN(form.phone.value))
{
alert('Due to SPAM this field will only accept numbers');
form.phone.focus();
return false;
}
当我测试表单并使用键盘空间时,会显示错误消息。我需要这个字段来接受数字和空格。我假设人们在输入完整的电话号码时会使用空格,包括国家/地区代码。
答案 0 :(得分:1)
你可以这样做
'use strict';
function addEvent(elem, event, fn) {
if (typeof elem === 'string') {
elem = document.getElementById(elem);
}
function listenHandler(e) {
var ret = fn.apply(null, arguments);
if (ret === false) {
e.stopPropagation();
e.preventDefault();
}
return ret;
}
function attachHandler() {
window.event.target = window.event.srcElement;
var ret = fn.call(elem, window.event);
if (ret === false) {
window.event.returnValue = false;
window.event.cancelBubble = true;
}
return ret;
}
if (elem.addEventListener) {
elem.addEventListener(event, listenHandler, false);
} else {
elem.attachEvent('on' + event, attachHandler);
}
}
var keys = ' 0123456789';
function verify(e) {
var key = String.fromCharCode(e.keyCode || e.charCode);
return keys.indexOf(key) !== -1;
}
addEvent('test', 'keypress', verify);
<input id="test" type="text" />
更新:如今所有内容都支持EventTarget.addEventListener,您不需要所有额外的样板。以上内容可以写成。
'use strict';
const element = document.getElementById('test');
const keys = ' 0123456789';
element.addEventListener('keypress', (e) => {
if (keys.includes(e.key) === false) {
e.stopPropagation();
e.preventDefault();
}
}, false);
<input id="test" type="text" />
的信息:
答案 1 :(得分:0)
使用html5 input type =“tel”属性(http://www.w3schools.com/tags/tag_input.asp)。