2013-05-08 2 views
0

Функция Javascript, чтобы избежать специальных символов. Он работает как ожидалось с альфами & numbers.only проблема, когда мне нужно включить -. (k> = 188 & & k < = 190) - это не работает. Что я делаю не так?Onkeypress, javascript не подтверждает специальный символ

var k; 
    document.all ? k = e.keyCode : k = e.which; 
    return ((k > 64 && k < 91) || (k > 96 && k < 123) || (k >= 188 && k <= 190)|| k == 8 || k == 32 || (k >= 48 && k <= 57)); 
+0

Так в чем проблема? Код ключа для дефиса - 45, что заставляет логику возвращать false. Разве это не намерение? –

+1

Почему вы не проверяете буквенно-числовое выражение с регулярным выражением типа '/ 0-9a-z/i'? – bfavaretto

+0

я запятая тире \t 189 (hypen) период \t 190 от http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes – tv4free

ответ

1

Это мой последний код, он будет поддерживать все браузеры. функция isAlphaNumeric (evtGet) {

var browser = navigator.appName; 
    if (browser == "Microsoft Internet Explorer" || browser == "Mozilla Firefox") { 
     var keyGet = evtGet.keyCode; 
    } else { 
     var keyGet = evtGet.which; //(window.Event) ? evtGet.which : evtGet.keyCode; 
    } 
    alert(keyGet); 
     if ((keyGet > 47 && keyGet < 58) || (keyGet > 64 && keyGet < 91) || (keyGet > 96 && keyGet < 123) || (keyGet == 9) || (keyGet == 32) || (keyGet == 8) || (keyGet == 0) || (keyGet == 13)||(keyGet==110)) 
      return; 
     else 
      if (browser == "Microsoft Internet Explorer" || browser == "Mozilla Firefox") 
      window.event.returnValue = null; 
     else 
      evtGet.preventDefault(); 
} 

поставил выше код в заголовке СПЯ

и вызвать из поля ввода, как OnKeyPress = "возвращение isAlphaNumeric (событие, this.value);">

предположит, что вы хотите изменить в коде согласно вашему требованию, есть окно с предупреждением запустите код 1st затем нажмите на клавиатуре она покажет код ключа согласно вашему требованию

примера -Вы хотите ввести (.) в поле, он покажет вам код ключа для точки id 47, и вы можете написать (keyGet==47)

Смежные вопросы