Из документации MDN для <input>
(выделено):
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");
}
});
<input id="part" type="text" pattern="[^,]*" />
<input id="checker" type="button" value="Check validity" />