![](/img/trans.png)
[英]How can I use javascript/jquery to prevent a decimal point from being typed into an HTML text field?
[英]In JavaScript, how can I prevent a number from being typed as the first character in a form field?
我使用JavaScript来防止将特定字符输入到字段中。 以下功能可防止输入数字。 它还会检查每个键入的字符,如果是数字,则阻止输入。
function LettersOnly(e) {
var key = window.event ? e.keyCode : e.which;
var keychar = String.fromCharCode(key);
var reg = new RegExp("[A-Za-z + ']");
return reg.test(keychar);
}
我想做类似的事情,阻止用户输入数字,但前提是它是第一个字符。 我该怎么做? 上面的代码是否正确? 为了实现这一点,我的正则表达式应该是什么样?
先谢谢您的帮助!
就像我在评论中说过的那样,很难防止对输入字段进行所有方式的操作(拖放/粘贴,剪切,删除),因此您最终需要在使用该字段之前对其进行验证。
也就是说,如果您要防止在字段的第一个字符中键入数字,可以使用以下命令:
document.getElementById("test").addEventListener("keypress", function(e) {
var key = e.which || e.keyCode;
if (this.selectionStart === 0) {
if (key > 48 && key < 57) {
e.preventDefault();
}
}
});
这样的事情应该工作:
function LettersOnly(e) {
e.target.value= /^\D/.test(e.target.value) ? e.target.value : "";
}
您还可以使用上述函数在oninput(),onpaste()和其他文本注入事件(不仅是键事件)上验证该规则。 输入的文本必须不为空并且不能以数字开头。
大多数浏览器都支持oninput(),该方法应涵盖大多数情况,但如果您支持旧版浏览器,则需要将其修补为常见的可疑对象(击键,粘贴,更改)。
注意:我更改了OP代码的精神,以实际上阻止这些输入更改输入。
例如,使用html5验证也将是一件好事:
<input pattern=/^\D/ >
对于非js用户。 红利:它涵盖了所有更改值的事件,您无需在js中手动处理单个事件。
您不需要使用regx,只需测试它是否为数字。 由于它必须以字母数字开头,因此该条目不是数字。 我刚刚回答了一个非常相似的问题,该问题需要一些代码来检测输入的内容并采取行动。
function checkInp(value)
{
if (isNaN(value)) {
alert("Must input numbers");
return false;
}
}
不要使用正则表达式。
尝试这个:
function getCaretPosition(oField) {
var iCaretPos = 0;
if (document.selection) {
oField.focus();
var oSel = document.selection.createRange();
oSel.moveStart ('character', -oField.value.length);
iCaretPos = oSel.text.length;
}
else if (oField.selectionStart || oField.selectionStart == '0')
iCaretPos = oField.selectionStart;
return (iCaretPos);
}
function LettersOnly(e){
return getCaretPosition(e.target) === 1 && e.keyCode > 48 && e.keyCode < 58;
}
如果将LettersOnly
绑定到输入的oninput
事件,则此方法应该起作用。
我认为您要检查来自表单输入字段的输入。 如果您一个接一个地检查字符,则无法使用单个正则表达式执行此操作,因为您只会针对某个字符测试该正则表达式。
您必须为此使用javascript吗? 如果仅是客户端验证,则可以在输入元素上使用HTML5提供的pattern属性。 在一个示例下面:(如果需要,请用您授权的字符替换该点)
否则,如果您想使用javascript,我认为该功能应如下所示:
function LettersOnly(e) {
var key = window.event ? e.keyCode : e.which;
var keychar = String.fromCharCode(key);
if (document.getElementById('inputfield').val.length === 0
&& !isNaN(parseInt(keychar)))) {
return false;
}
var reg = new RegExp("[A-Za-z + ']");
return reg.test(keychar);
}
document.getElementById('inputfield').val.length === 0
检查输入字段中的字符串是否为空(即我们在当前字符处是第一个)替换或改写测试是否适用于某些内容而不是HTML表单的输入字段。
!isNaN(parseInt(keychar)))
检查是否为数字
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.