我正在使用以下代码段检查此输入的有效性,以确保其不包含任何逗号:
var valid_part = document.getElementById("part");
if (valid_part.checkValidity()) {
alert("Item Description contains no commas ");
}
else {
alert("Item Description cannot contain a comma");
}
<input pattern="[^,]" type="text" id="part">
但是,无论输入值是什么,valid_part.checkValidity()
始终返回true。
我已经在Chromium和Firefox在Debian上以及Chrome和Firefox在Android上进行了尝试,结果始终是相同的。
该功能有效吗?如果没有,我是否应该使用其他方法检查输入中的逗号?
答案 0 :(得分:3)
来自MDN documentation for <input>
(重点是我):
14/06/2017 - 6.5 hours 15/06/2017 - 5.5 hours 18/01/2018 - 4.5 hours 26/02/2018 - 0.05 hours 27/02/2018 - 11.58 hours
:检查控件值的正则表达式。 该模式必须与整个值匹配。
因此,pattern
的意思是“该字符串包含个完全不是字符的字符”。因此,您的验证检查实际上应仅针对[^,]
以外的单个字符返回true
。它还为空字符串返回,
,但对于所有其他字符串实际上返回true
。
您要false
的意思是“该字符串包含任意数量的字符(包括无逗号)”。
此外,您提供的代码尚不清楚,但是请确保该代码位于您需要验证时可以运行的函数中。示例片段:
[^,]*
document.getElementById("checker").addEventListener("click", function() {
var valid_part = document.getElementById("part");
if (valid_part.checkValidity()) {
alert("Item Description contains no commas ");
}
else {
alert("Item Description cannot contain a comma");
}
});