OnInput блокировка ввода символов
Как вернуть текст который был ?
Т.е удалить неправильный символ. <input id="id_Radio_Text" OnInput="MathInput()" name="N_Radio_Text" type="text" maxlength="64">
function MathInput(){
var Radio_Text = document.getElementById("id_Radio_Text");
var result = Radio_Text.value.match( /^[0-9a-fA-F]{1,4}$/ig );
if(result==null){
Radio_Text.value="";
return;
}else{
return;
}
}
|
в MathInput сохранять где-то текст, который получился. Если новый текст не прошел валидацию, возвращать старый.
В идеале хорошо бы ещё позицию курсора возвращать - юзер может редактировать где-то в середине строки. И конечно, сделать регекс таким образом, чтобы пустую строку допускал (в твоем примере - /^[0-9a-fA-F]{0,4}$/ig) |
Цитата:
Цитата:
|
И a-fA-F при модификаторе i
|
Благодарю, сделал так
var Radio_Text_old;
function MathInput(){
var Radio_Text = document.getElementById("id_Radio_Text");
var result = Radio_Text.value.match( /^[0-9a-fA-F]{0,4}$/ig );
if(result==null){
Radio_Text.value=Radio_Text_old;
}
Radio_Text_old=Radio_Text.value;
}
PS: про maxlength в курсе просто на одной форме все regexp гоняю |
pokk,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script>
window.addEventListener("DOMContentLoaded", function() {
var el = document.getElementById("id_Radio_Text");
function check() {
var val = this.value;
val = val.replace(/[^0-9a-f]/gi, "");
val.length > 4 && (val.length = 4);
val != this.value && (this.value = val);
}
el.addEventListener("input", check, false)
}, false);
</script>
</head>
<body>
<input id="id_Radio_Text" name="N_Radio_Text" type="text" maxlength="4">
</body>
</html>
|
Извиняюсь, но в чем преимущество ?
|
Цитата:
это вариант решения, хотите используйте, хотите нет. |
| Часовой пояс GMT +3, время: 08:04. |