2014-02-13 2 views
0

Не могли бы вы помочь мне исправить мой код? У меня есть текстовое поле, который будет принимать буквенно-цифровой, но я хочу, чтобы включить пробел и период ..Проверка текста в javascript

пожалуйста, помогите мне .. спасибо

<html> 
<head> 
<script type='text/javascript'> 
var specialKeys = new Array(); 
      specialKeys.push(8); //Backspace 
      specialKeys.push(9); //Tab 
      specialKeys.push(46); //Delete 
      specialKeys.push(36); //Home 
      specialKeys.push(35); //End 
      specialKeys.push(37); //Left 
      specialKeys.push(39); //Right 
      specialKeys.push(38); //Up 
      specialKeys.push(40); //Down 
      specialKeys.push(190); //Period 
      specialKeys.push(32); //Space 
     function IsAlphaNumeric(e) 
      { 
       var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode; 
       var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 96 && keyCode <= 122) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode)); 
       document.getElementById("error1").style.display = ret ? "none" : "inline"; 

       return ret; 
      } 
</script> 
</head> 
<body> 

<div id="error1" style="width:300px;background:#FF9999;border:1px solid #FF1919;height:18px;text-align:center;font-family:Verdana;font-size:10px;line-height:18px;display:none;">&nbsp;&nbsp;ERROR : Special Characters not allowed&nbsp;&nbsp;</div><br> 
               <input type='text' name='customerName' style='width:400px;text-transform:uppercase' onkeypress="return IsAlphaNumeric(event);"/> 

</body> 
</html> 
+0

Я думаю, вы должны попробовать RegEx. –

ответ

0

Использование регулярных выражений для проверки ввода, как это: http://jsfiddle.net/maximgladkov/exyVL/

function IsAlphaNumeric(e) { 
    var result = e.keyCode > 0 || /^[0-9a-zA-Z .?\/]$/.test(String.fromCharCode(e.charCode)); 
    document.getElementById("error1").style.display = result ? "none" : "inline"; 

    return result; 
}; 
+0

большое спасибо max. У меня есть другой вопрос .. как включить backspace? – lei

+0

а также специальный знак /? Большое вам спасибо. Я очень ценю ваш ответ – lei

+0

Странно, backspace работает для меня. –

1

Вы можете просто добавить (KEYCODE == 32 || KEYCODE == 46) на чеке для принятых символов:

<html> 
<head> 
<script type='text/javascript'> 
var specialKeys = new Array(); 
      specialKeys.push(8); //Backspace 
      specialKeys.push(9); //Tab 
      specialKeys.push(46); //Delete 
      specialKeys.push(36); //Home 
      specialKeys.push(35); //End 
      specialKeys.push(37); //Left 
      specialKeys.push(39); //Right 
      specialKeys.push(38); //Up 
      specialKeys.push(40); //Down 

     function IsAlphaNumeric(e) 
      { 
       var keyCode = e.keyCode == 0 ? e.charCode : e.keyCode; 
       var ret = ((keyCode == 32 || keyCode == 46) || (keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 96 && keyCode <= 122) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode)); 
       document.getElementById("error1").style.display = ret ? "none" : "inline"; 

       return ret; 
      } 
</script> 
</head> 
<body> 

<div id="error1" style="width:300px;background:#FF9999;border:1px solid #FF1919;height:18px;text-align:center;font-family:Verdana;font-size:10px;line-height:18px;display:none;">&nbsp;&nbsp;ERROR : Special Characters not allowed&nbsp;&nbsp;</div><br> 
               <input type='text' name='customerName' style='width:400px;text-transform:uppercase' onkeypress="return IsAlphaNumeric(event);"/> 

</body> 
</html> 
+0

он не работает :( он позволит всем специальным символам. – lei

+0

Я просто хочу принять буквенно-цифровое пространство и период (.) Только .. – lei

+0

извините! Период keycode 46, просто попробуйте отредактированный вами код –

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