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, время: 09:36. |