Отключение некоторых специальных символов в текстовой области - PullRequest
1 голос
/ 14 февраля 2011

Эй, ребята, я думаю о способах запретить пользователям вводить некоторые специальные символы, такие как <и>.Но я бы хотел, чтобы они использовали точки и запятые, а также вопросительные знаки, восклицательные знаки и кавычки.Я придумал этот кусок кода, но, похоже, он не позволяет использовать какой-либо специальный символ.:

<script type="text/JavaScript">
function valid(f) {
!(/^[A-zÑñ0-9]*$/i).test(f.value)?f.value = f.value.replace(/[^A-zÑñ0-9]/ig,''):null;
} 
</script>

Ответы [ 3 ]

1 голос
/ 14 февраля 2011

Есть несколько способов сделать это, но ни один из них не является хорошим способом, но мы вернемся к этому.

  1. вы можете привязать к onkeyup/onkeydown/onkeypress событиям элемента и отменить события для символов, которые вы в черном списке. Однако это не помешает людям вставлять символы в поле.

  2. Вы можете привязаться к событию onchange элемента, и они удалят черные символы из него, как только пользователь завершит ввод.

Проблема с любым типом очистки, подобным этой, в javascript заключается в том, что для пользователя, обладающего небольшим количеством ноу-хау, тривиально обойти эти меры и все равно загрузить загруженные символы на сервер.

Так что, если вы не хотите, чтобы специальные символы вводились пользователем, вы должны либо

  1. удалить их на стороне сервера после отправки пользовательского ввода
  2. сохраните их, но закодируйте в html-сущности &gt; и &lt;, например, для > и <, прежде чем выводить их в любое место на вашей веб-странице.
1 голос
/ 15 июля 2011

Попробуйте с этим ...

var iChars = "!@#$%^&*()+=-[]\\\';,./{}|\":<>?";

  for (var i = 0; i < document.formname.fieldname.value.length; i++) {
    if (iChars.indexOf(document.formname.fieldname.value.charAt(i)) != -1) {
    alert ("Your username has special characters. \nThese are not allowed.\n Please remove them and try again.");
    return false;
    }
  }
0 голосов
/ 14 февраля 2011

почему бы просто не проверить символ, нажатый на событии "onKeyDown"?

<textarea id="foo"></textarea>

<script>
 document.getElementById('foo').onkeydown = validate;

 function validate(){
   var evtobj = window.event? event : e; // IE event or normal event
   var unicode = evtobj.charCode? evtobj.charCode : evtobj.keyCode;
   var actualkey = String.fromCharCode(unicode);
 ]

 return (/^[A-zÑñ0-9]*$/i).test(actualKey);
</script>

Это просто возвращает нажатую клавишу, и, если она действительна, возвращает true, в противном случае false, это, в терминах, определяет, действительно ли клавиша записана в текстовой области или нет

...