Может ли кто-нибудь исправить мою проблему с ограничением пространства специальных символов js textarea - PullRequest
0 голосов
/ 02 августа 2020

Оригинальный код

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/JavaScript">
function valid(f) {
!(/^[A-z&#209;&#241;0-9]*$/i).test(f.value)?f.value = f.value.replace(/[^A-z&#209;&#241;0-9]/ig,''):null;
} 
</script>
</head>
<body><br>
<form id="myform" action="">
<input name="mytext" type="text" onkeyup="valid(this)" onblur="valid(this)">
</form>
</body>
</html>

Я предпочитаю код из javascript! спасибо

я не могу понять, как разрешить пробелы? у кого-нибудь есть идея, которую я пробовал в jquery, но я не понимаю, почему я всегда получаю такие же ошибки, как js / я думаю, что пробел RegExp равен "" \ s "" , а вроде не работает?

Ответы [ 2 ]

0 голосов
/ 02 августа 2020

Вы можете просто использовать буквальный символ space. Вот что я делаю здесь после 0-9:

function valid(f) {
  !(/^[A-z&#209;&#241;0-9 ]*$/i).test(f.value)?f.value = f.value.replace(/[^A-z&#209;&#241;0-9 ]/ig,''):null;
} 

Я создал до и после здесь: https://jsfiddle.net/bzu6tg92/1/

Как вы можете видеть на В этом примере «после» разрешает пробел, тогда как «до» (ваш код) заменяет его.

0 голосов
/ 02 августа 2020

пробел в регулярном выражении - это просто "". Казалось, что это сработало, если я просто добавил пробел в ваше регулярное выражение

function valid(f) {
!(/^[A-z&#209;&#241;0-9 ]*$/i).test(f.value)?f.value = f.value.replace(/[^A-z&#209;&#241;0-9 ]/ig,''):null;
} 

edit: Я пробовал \ s, и, похоже, он также работает

function valid(f) {
!(/^[A-z&#209;&#241;0-9\s]*$/i).test(f.value)?f.value = f.value.replace(/[^A-z&#209;&#241;0-9\s]/ig,''):null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...