В любом случае я могу определить кодировку в текстовых областях с помощью HTML и чистого JS?
Я хочу, чтобы они не разрешали специальные символы Юникода (например, ♣ ♦ ♠).
Действительный диапазон символов (для моей цели) - от кодовой точки Юникода U+0000
до U+00FF
.
OK, чтобы молча заменить недействительные символы пустой строкой при отправке формы (без предупреждения для пользователя).Определить допустимые символы в текстовых объектах HTML
ответ
Итак, как вы выяснили в комментариях: вы хотите, чтобы заменить символы, которые Вы сочтете нелегальный с пустыми строками по форме - без предупреждения.
Учитывая следующий пример HTML (содержимое тела):
<form action="demo_form.asp">
First name: <input type="text" name="fname" /><br>
Last name: <input type="text" name="lname" /><br>
Likes: <textarea name="txt_a"></textarea><br>
Dislikes: <textarea name="txt_b"></textarea><br>
<input type="submit" value="Submit">
</form>
Вот основные концепции JavaScript:
function demo(){
for(var elms=this.getElementsByTagName('textarea')
, L=elms.length
; L--
; elms[L].value=elms[L].value.replace(/[^\u0000-\u00FF]/g,'')
);
}
window.onload=function(){
document.forms[0].onsubmit=demo; //hook form's onsubmit use any method you like
};
Основная идея заключается в том, чтобы заставить регулярок двигатель браузера, чтобы соответствовать на Unicode (а не локальной кодировкой), используя нотацию \uXXXX
.
Затем мы просто делаем ряд: [\u0000-\u00FF]
и, наконец, указываем, что хотим согласовать по всем снаружи этот диапазон: [^\u0000-\u00FF]
.
Все, что соответствует этим критериям, будет заменено на ''
(пустая строка) при подаче формы. Никакого предупреждения нет ничего.
Вы можете/должны свободно расширять эту концепцию, чтобы включить ее в свой код (таким образом, чтобы он соответствовал вашему кодовому потоку) (и там, где это необходимо, примените его к input type="text"
и т. Д.) В зависимости от ваших дальнейших требований.
Это должно вас начать!
EDIT:
Обратите внимание, что текущая спецификация действительна-диапазон (\u0000-\u00FF
) будет эффективно Dis-разрешить все такие 'досадные' специальные символы, такие как:
- фантазии цитаты
‘ ’ “ ”
(это большой функция для людей, копирующих от слова и т.д.), € ™ Œ œ
и т.д.
Но он будет содержать полный блок управления C1 (all 32 control-characters). Однако, с другой стороны, это согласуется с включением полного блока управления C0.
Фактически, это ваш (то, что вы запросили) действительный набор символов: http://en.wikipedia.org/wiki/ISO/IEC_8859-1
Как вы теперь видите, есть еще много чего. Вот почему здравомыслящие приложения (наконец) начинают использовать Unicode (обычно кодируются для Интернета как UTF-8) и просто принимают то, что предоставляют пользователи (в пределах (чрезвычайно четко заданной) причине)!
Большинство общих валидация вопросов (в реальном мире) не более чем средняя школа класс пример концепции о проверке (и даже более важно: чтобы объяснить основы регулярных выражений с что считается легко понятным примером, таким как имя/адрес электронной почты/адрес). К сожалению, они чрезвычайно применяются даже к некоторым государственным системам идентификации (вплоть до паспортов и т. Д.) К именам людей, адресам и т. Д. Фактически: даже полный текущий Юникод не может представлять имя каждого человека (в естественной записи) на планете (что на самом деле все еще жив) !! Пример в реальном мире: попробуйте ввести и покинуть коммерческий рейс, когда ваш посадочный талон имеет разные учетные данные, а затем ваш паспорт (независимо от того, какой из них неверен). «Просто» недостаток умлаута будет проблемой где-то, худшим примером, представьте себе женщину с немецким именем, тайской фамилию и женился на человек с фамилией мандарина ..
Source: xkcd.com/1171/
Наконец: Пожалуйста, понимает, что в большинстве случаев все это упражнение бесполезно (если вы это сделаете без предупреждения), потому что:
вы можете никогда просто признайте, вход на серверной стороне без надлежащей очистки, так что вы уже (без каких-либо знаний пользователя), очищаете свой вход в форму, которая вам нужна (для начинающего программиста (который забывает думать (например) о пользователях с javascript отключен,) это иногда напоминает повторение работы, уже выполненной в javascript на стороне клиента) ...
Обычно, единственное использование , реплицируя поведение на стороне сервера на стороне клиента (обычно используя javascript), так пользователь динамически знает, что будет запрещено сервером (без отправки данных назад и вперед) и может соответствующим образом адаптироваться!
Спасибо за решение, а не только он работает, так как у вас есть какая-то действительно полезная информация. A + ответ! Кроме того, что касается молчаливого удаления, серьезных проблем нет, потому что люди, обращающиеся к нему, имеют в виду то, что разрешено или нет, это просто для того, чтобы нежелательные люди пытались отправить неработающие данные. Еще раз, спасибо! – Heinzen
Спасибо, ты очень рад! Благодарим вас за то, что вы опубликовали четко определенный, но широко применимый вопрос (так это то, что позволило добавить к моему ответу более важную и актуальную информацию (в целом))! – GitaarLAB
Вы можете использовать форму атрибут Accept-кодировок
Атрибут Accept-кодировка определяет кодировку символов, которые будут использоваться для отправки формы.
Значение по умолчанию - это зарезервированная строка «UNKNOWN» (указывает, что кодировка равна кодированию документа, содержащего элемент ).
Смотрите эту документацию http://www.w3schools.com/tags/att_form_accept_charset.asp
Я не могу сказать, если это защитит текстовое поле, но по крайней мере он контролирует то, что набор символов, представленный в форме.
На самом деле этот вопрос уже был дан ответ javascript to prevent writing into form elements after n utf 8 characters
Я пробовал использовать метод формы, и это не решает мою проблему. Я не уверен, что я сделал это неправильно, но я все еще получал символы Юникода, которые были отправлены на мой сервер. – Heinzen
Я просто подумал о другом решении, возможно, вы могли бы разместить слушателя на полях. Затем выполните поиск регулярного выражения для символов UTF-8, а затем удалите их? –
UTF-8 символов ??? Да, мы будем делать регулярное выражение что-то на входе, но для этого нам нужно знать допустимые и недопустимые диапазоны, требуемые оператором. – GitaarLAB
<!-----This is jquery script which hold to stop special unicode characters. -------->
<script>
$("#input-text").keypress(function(e)
{
var code = e.which || e.keyCode;
// 65 - 90 for A-Z and 97 - 122 for a-z 95 for _ 45 for - 46 for .
if (!((code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code == 95 || code == 46 || code == 45))
{
var text = $("#input-text").val();
text = text.substring(0,text.length);
$("#input-text").val(text);
}
});
</script>
<!-----This is input text field-------->
<input id="input-text" name="input-text" type="text" >
Спасибо за ответ, хотя я ищу чисто JS-решение, поскольку я вообще не использовал jquery в своем проекте. Спасибо за ответ по-прежнему – Heinzen
- 1. Французские символы в html-объектах
- 2. строка содержит допустимые символы
- 3. Допустимые символы Regex (JavaScript)
- 4. AWS SQS допустимые символы
- 5. Допустимые символы имени хоста?
- 6. Допустимые символы в строке cookie?
- 7. Допустимые символы в веб-форме
- 8. Каковы допустимые символы в домене?
- 9. Допустимые символы для Domino fullname
- 10. Идентификатор пользователя Firebase Допустимые символы
- 11. Подсчитайте допустимые для печати символы
- 12. Допустимые символы для схем URI?
- 13. Пусковая кнопка Firebase - допустимые символы
- 14. Двоичный считыватель и допустимые символы
- 15. Redis: допустимые символы для значений
- 16. Допустимые символы для идентификаторов CSS
- 17. Каковы допустимые символы в ключевом слове Clojure?
- 18. Pass только допустимые символы в Java
- 19. Допустимые символы в именах переменных среды linux
- 20. Символы, допустимые в идентификаторе Google C2DM
- 21. Допустимые символы в свойстве CSS 'content'?
- 22. Блокирование допустимые символы в текстовое поле
- 23. Каковы допустимые символы в фрагменте URL (location.hash)?
- 24. Как изменить язык в текстовых объектах jFairy?
- 25. Как изменить недопустимые символы на допустимые символы в Java?
- 26. Как определить допустимые теги в CKEditor?
- 27. Lua - Проверьте, содержит ли строка допустимые символы
- 28. Каковы допустимые символы для имени метода Java?
- 29. Как указать допустимые символы на клавиатуре?
- 30. Проверьте, содержат ли строки только допустимые символы
Просьба уточнить «специальные символы Юникода», которые вы хотите исключить, или указать символы, которые вы хотите принять. Я спрашиваю, потому что: если бы вы (например) использовали атрибут формы 'accept-charset', вы все равно принимали бы символы (из этого набора символов) между 0x7F и 0xFF. Также это повлияло бы на то, как данные будут отправлены на ваш сервер. – GitaarLAB
Это довольно расплывчато ..UTF-8 является * кодировкой * (переменной байтовой длины) Unicode * charset * (из которой вы хотите исключить специальные символы). Пожалуйста, укажите ваши потребности далее: какой символ (s/range (s)) разрешены, какой символ (s/range (s)) разрешен? – GitaarLAB
Хорошо, что очищает необходимый диапазон. Теперь, как вы хотите обрабатывать исключения? (a :) заменить их ничем (пустая строка), пока пользователь вводит текст в текстовое поле (что может привести к тому, что курсор textarea вернется к первой позиции символа textarea) (b :) Предупреждать пользователя во время ввода или отправки (c :) молча заменить незаконных символов при отправке (d :) всплывать экран предупреждения, информирующий пользователя о том, какие символы разрешены (и где) (и дать им возможность их изменить) и т. д. и т. д., смешивать и матч .. Итак, как вы хотите справиться с исключениями? – GitaarLAB