Я пытаюсь разрешить только определенные символы, которые пользователь может вводить / копировать в поле HTML- <input>
, используя следующее регулярное выражение:
return /^[A-Za-z0-9 ]*$/.test(value);
Это работает для меня правильно, но только если я начинаюс разрешенным символом (например: « A »).
Однако, если я начинаю с символа, который не разрешен моим регулярным выражением (например: "! "), я неожиданно могу ввести символы, которые должны быть отключены:
![enter image description here](https://i.stack.imgur.com/dCbWQ.png)
Для тестирования я создал следующую скрипку: >> Нажмите << </a>
Полный скрипт в качестве ссылки:
<input type="text" class="polarion-TextBox" name="targetDocument" style="width: 100%;">
<script type="text/javascript">
window.addEventListener("DOMContentLoaded", function() {
window.setTimeout ( function() {
// Restricts input for the given textbox to the given inputFilter.
function setInputFilter(textbox, inputFilter) {
["input"].forEach(function(event) {
textbox.addEventListener(event, function() {
if (inputFilter(this.value)) {
this.oldValue = this.value;
this.oldSelectionStart = this.selectionStart;
this.oldSelectionEnd = this.selectionEnd;
} else if (this.hasOwnProperty("oldValue")) {
this.value = this.oldValue;
this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
}
});
});
}
// Restrict input to digits and '.' by using a regular expression filter.
setInputFilter(document.getElementsByName("targetDocument")[0], function(value) {
return /^[A-Za-z0-9 ]*$/.test(value);
});
}, 1000);
}, false);
</script>