Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Проверка вводимых символов


Автор: MrDmitry 12.5.2011, 16:54
Всем привет. Возникла потребность в скрипте, который бы проверял вводимые символы, и в случаи ввода запрещенных выдовал сообщения. Делаю сейчас так

Код

Логин<br>
            <input type="text" size="40" id="login" onkeypress="CountLogin('login')" onfocus="CountLogin('login')" 
          onkeyup="CountLogin('login')"><span class="mini" id="login_correct"> не менее 5 символов</span>
           <div class="mini">введено: <span id="login_view">0</span></div>



Код

function AlphaArray(items, correct) {
var noalpha = new Array('й', 'Й', 'ц', 'Ц', 'у', 'У', 'е', 'Е', 'н', 'Н', 'г', 'Г',
'ш', 'Ш', 'щ', 'Щ', 'з', 'З', 'х', 'Х', '[', '{', 'ъ', 'Ъ', ']', '}', 'ф', 'Ф', 'ы', 'Ы',
'в', 'В', 'А', 'а', 'п', 'П', 'р', 'Р', 'о', 'О', 'л', 'Л', 'д', 'Д', 'ж', 'Ж', ';', ':', 'э', 'Э',
'"', 'я', 'Я', 'ч', 'Ч', 'с', 'С', 'м', 'М', 'и', 'И', 'т', 'Т', 'ь', 'Ь', 'б', 'Б', ',', '<', 'ю', 'Ю',
'>', '/', '?', '~', '!', '#', '$', '%', '^', '№', '&', '*', '(', ')', '+', '|', 'ё', 'Ё', ' ');

var c = String.fromCharCode(items.which); 

for(var i=0; i<noalpha.length; i++) {
  if(items==noalpha[i])
   {
    result = false;
    break;
   }
   else {
     result = true;
   }
}
if(result==false){
   document.getElementById(correct).innerHTML = ' спец символы запрещены';
   document.getElementById(сorrect).className = 'acorrect';
   items.append('');
  }
}

function CountLogin(item) {
var item_view = 'login_view';
var item_correct = 'login_correct';

document.getElementById(item_view).innerHTML = document.getElementById(item).value.length++;
 if (document.getElementById(item).value.length >= 5) {
  document.getElementById(item_correct).innerHTML = ' верно';
  AlphaArray(document.getElementById(item).value,item_correct);
  document.getElementById(item_correct).className = 'correct';
 } else {
  document.getElementById(item_correct).innerHTML = ' не менее 5 символов';
  AlphaArray(document.getElementById(item).value,item_correct);
  document.getElementById(item_correct).className = 'acorrect';
 } 
 
if (document.getElementById(item).value.length >= 5) { 
$(document).ready(function(){
$.ajax({
url: '/modules/regestration/reg.php',
data : {'login':$('#login').val(), 'correct':'1',},
type : "POST",
success: function (data) {
if (data=='Логин занят'){
document.getElementById(item_correct).innerHTML = ' '+ data;
document.getElementById(item_correct).className = 'acorrect';
} else {
document.getElementById(item_correct).innerHTML = ' ' + data;
document.getElementById(item_correct).className = 'correct';
}
},
error: function(){
alert ("No PHP script: ");

   });

return false;
 });
 } 
 checkAll(); 
}


Собственно тут скрипт должен проверять на кол-во введеных символов, затем проверять на запрещенные символы (функция function AlphaArray(items, correct) ) и затем проверять существование логина в базе (ajax) все работает хорошо кроме проверки на вводимые символы. Как можно исправить?

Автор: CruorVult 12.5.2011, 17:03
а что не работает?

Автор: MrDmitry 14.5.2011, 14:30
не работает функция 


Код

function AlphaArray(items, correct) {
var noalpha = new Array('й', 'Й', 'ц', 'Ц', 'у', 'У', 'е', 'Е', 'н', 'Н', 'г', 'Г',
'ш', 'Ш', 'щ', 'Щ', 'з', 'З', 'х', 'Х', '[', '{', 'ъ', 'Ъ', ']', '}', 'ф', 'Ф', 'ы', 'Ы',
'в', 'В', 'А', 'а', 'п', 'П', 'р', 'Р', 'о', 'О', 'л', 'Л', 'д', 'Д', 'ж', 'Ж', ';', ':', 'э', 'Э',
'"', 'я', 'Я', 'ч', 'Ч', 'с', 'С', 'м', 'М', 'и', 'И', 'т', 'Т', 'ь', 'Ь', 'б', 'Б', ',', '<', 'ю', 'Ю',
'>', '/', '?', '~', '!', '#', '$', '%', '^', '№', '&', '*', '(', ')', '+', '|', 'ё', 'Ё', ' ');
var c = String.fromCharCode(items.which); 
for(var i=0; i<noalpha.length; i++) {
  if(items==noalpha[i])
   {
    result = false;
    break;
   }
   else {
     result = true;
   }
}
if(result==false){
   document.getElementById(correct).innerHTML = ' спец символы запрещены';
   document.getElementById(сorrect).className = 'acorrect';
   items.append('');
  }
}


тоесть например в поле с id=login я ввожу Nick все впорятке
И если я ввожу "Nick "
то тоже все впорятке, а хотелось бы запетить ввод русских символов, пробелом, запятых и т.д

Автор: нуп 14.5.2011, 14:55
Код

if(items==noalpha[i])

Сравниваете строку с символом? smile 

Автор: MrDmitry 14.5.2011, 16:13
Не много переделал функцию.

Код

function AlphaArray(items, correct) {
var noalpha = new Array('й', 'Й', 'ц', 'Ц', 'у', 'У', 'е', 'Е', 'н', 'Н', 'г', 'Г',
'ш', 'Ш', 'щ', 'Щ', 'з', 'З', 'х', 'Х', '[', '{', 'ъ', 'Ъ', ']', '}', 'ф', 'Ф', 'ы', 'Ы',
'в', 'В', 'А', 'а', 'п', 'П', 'р', 'Р', 'о', 'О', 'л', 'Л', 'д', 'Д', 'ж', 'Ж', ';', ':', 'э', 'Э',
'"', 'я', 'Я', 'ч', 'Ч', 'с', 'С', 'м', 'М', 'и', 'И', 'т', 'Т', 'ь', 'Ь', 'б', 'Б', ',', '<', 'ю', 'Ю',
'>', '/', '?', '~', '!', '#', '$', '%', '^', '№', '&', '*', '(', ')', '+', '|', 'ё', 'Ё', ' ');

for(var k=0; k<items.length; k++){var len=k}


for(var i=0; i<noalpha.length; i++) {
  if(items[len]==noalpha[i])
   {
    result = false;
    break;
   }
   else {
     result = true;
   }
}
if(result==false){
   document.getElementById(correct).innerHTML = ' спец символы запрещены';
   document.getElementById(сorrect).className = 'acorrect';
   document.getElementById(items).value = ' ';
  }
}


Символ проверяется. Но как запретить ввод символа из массива?  И еще. Такой метод проверяет только если мы сами пишем текст, а если например мы сделаем ctr+v где последний символ не будет в списке запрещеных то такой текст пройдет ((

Автор: нуп 14.5.2011, 17:26
Цитата(MrDmitry @  14.5.2011,  16:13 Найти цитируемый пост)
if(items[len]==noalpha[i])

 smile 
Проверяйте каждый символ строки на вхождение в массив и если находите запрещенный то просто заменяйте его на пустое значение. Ну а вообще проще регуляркой

Автор: Amphiluke 14.5.2011, 17:54
Цитата(MrDmitry @  14.5.2011,  20:13 Найти цитируемый пост)
for(var k=0; k<items.length; k++){var len=k}

 smile 

Пардон за оффтоп.

Автор: fidres 8.6.2011, 07:53
блин.
а не проще ли использовать CASE для проверки введённой буквы?
ввёл русскую буквицу/спец.символ - получи откат и алерт.
а по выходу из компонента - проверка на валидность введённого...
(кстати, проверку на длину введённого текста - так же можно включить в CASE-ветки. возможно с переадресацией в отдельну функцию проверки.)

как же вы любите всё усложнять!..

Автор: нуп 8.6.2011, 08:39
А если юзер вставил строку с запрещенными символами?

Автор: Evghenusi 8.6.2011, 10:29
Цитата(нуп @  14.5.2011,  17:26 Найти цитируемый пост)
Ну а вообще проще регуляркой 

поддерживаю, куда проще и удобнее. как проверить ею можно, так и запретить, только используя разные функции если не ошибаюсь

Цитата(fidres @  8.6.2011,  07:53 Найти цитируемый пост)
блин.
а не проще ли использовать CASE для проверки введённой буквы?
ввёл русскую буквицу/спец.символ - получи откат и алерт.
а по выходу из компонента - проверка на валидность введённого...
(кстати, проверку на длину введённого текста - так же можно включить в CASE-ветки. возможно с переадресацией в отдельну функцию проверки.)

как же вы любите всё усложнять!.. 

эээээээ....даже не знаю что ответить.

много строчный CASE или одно строчная регулярка....наверно всё же CASE, что бы не усложнять  smile

Автор: fidres 9.6.2011, 04:58
Цитата(нуп @ 8.6.2011,  08:39)
А если юзер вставил строку с запрещенными символами?

а если использовать ELSE в CASE?

Цитата(Evghenusi)
или одно строчная регулярка....
а проверка вводимого в регулярку - проще?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)