У меня есть регулярное выражение для набора вариантов использования
На основании этого регулярного выражения я пытаюсь запретить пользователю вводить недопустимые форматы.
Регулярное выражение работает и предотвращает добавление недопустимых форматов пользователем.
Часть, с которой я сейчас борюсь, состоит в том, что если значение по умолчанию недопустимо, пользователь не сможет добавить дополнительные допустимые символы.
Вот что у меня есть: http://jsfiddle.net/jgqco7by/2/.
<input id="myInput" type="text" value="co vi1d-" />
var previousValue = document.getElementById('myInput').value;
var pattern = /^[a-zA-Z]+(?:[ -][a-zA-Z]+)*([ ]|[-])?$/g;
function validateInput(event) {
event = event || window.event;
var newValue = event.target.value || '';
if (newValue.match(pattern)) {
// Valid input; update previousValue:
previousValue = newValue;
} else {
// Invalid input; reset field value:
event.target.value = previousValue;
}
}
document.getElementById('myInput').oninput = validateInput;
В этом примере, поскольку у меня есть значение по умолчанию, которое содержит число, которое не допускается, все, что я печатаю, заменяется предыдущим значением, потому что регулярное выражение продолжает возвращаться как недопустимое.
Как я могу построить это так, чтобы, если значение по умолчанию было недействительным, пользователь все еще мог добавить дополнительные значения VALID без необходимости удалять сначала недопустимые значения по умолчанию?