#javascript #jquery #регулярные_выражения
Подскажите , как правильно сделать проверку символов в строке ? вот код который запрещает вводить русские символы в инпут: myinput.oninput = function() { var srint = $("#myinput").val().replace(/[а-яА-ЯЁё-і]/g, ''); srint.replace(/[а-яА-ЯЁё-і]/g, ''); $("#myinput").val(srint); }; Нужно , чтоб когда пользователь вводил русские символы срабатывала alert("введите латинские символы") Подскажите как сделать такую проверку?
Ответы
Ответ 1
Раз уж вы используете jQuery, так используйте и события $("#myinput").on('keydown', function(e) { var regexp = /[а-яё]/i; if(regexp.test(this.val())) { e.preventDefault(); alert("введите латинские символы"); return false; } ... }); Дополнение Как правильно заметил @Qwertiy лучше проверят не на присутствие запрещенных символов, а на наличие только разрешенных. Например только латиница + пробелы $("#myinput").on('keydown', function(e) { var regexp = /^[a-z\s]+$/i; if(!regexp.test(this.val())) { e.preventDefault(); alert("введите только латинские символы или пробелы"); return false; } ... });Ответ 2
Надо не запрещать, а разрешать. В юникоде всегда найдётся алфавит, который те не хочешь увидеть, раз уж русские буквы не подходят. Ну и используй флаг игнорирования регистра.Ответ 3
Можно проверять код символа в Unicode и определять входит ли он в диапазон допустимых. Коды от 48 до 57 - это цифры. Коды от 64-90 - латинские заглавные буквы от 'A' до 'Z' Коды от 97-122 - латинские строчные буквы от 'a' до 'z' Промежутки между этими диапазонами содержат технические символы и знаки типа !@#$%^&*. Коды выше 122 содержат алфавиты других культур в том числе и кириллицу (1040-1103). Если вы допускаете ввод технических символов, то можно просто проверять что код символа меньше 122: function checkInput(event) { var x = event.charCode; if(x>122) //символ 122 это латинская 'z' { alert("Некорректный ввод"); } }
Комментариев нет:
Отправить комментарий