|
|
|
| Как ограничить число вводимих символов в текстовом поле формы textarea каким то количеством, то есть чтобы пользователь не смог ввести больше определенного количества символов? | |
|
|
|
|
|
|
|
для: velgandr
(06.10.2008 в 17:01)
| | JS'ом проверять длину текста при onkeyup и onchange... Как такового свойства, задающего максимальную длину вводимого текста, как maxlength у <input type=text>, у textarea нет.
<textarea cols=50 rows=20 id="myTextArea"></textarea>
<script>
var maxlength = 100;
var myTextArea = document.getElementById("myTextArea");
function fixLength() {
myTextArea.value = myTextArea.value.substr(0, maxlength);
}
myTextArea.onkeyup = myTextArea.onchange = fixLength;
</script>
|
| |
|
|
|
|
|
|
|
для: velgandr
(06.10.2008 в 17:01)
| | По уму этого делать НЕ НАДО!
Многие пишут, не глядя на монитор. Написал такой человек целую поэму, глянул на монитор - а там ровно одна десятая того, что он написал... обидится он, плюнет и уйдёт с этого сайта НАВСЕГДА.
Где-то рядом с textarea напишите, что количество символов ограничено... но проверку делайте только на сервере. Если символов больше, чем вы хотите - верните клиенту ВЕСЬ его введенный текст с просьбой сократить объём написанного. | |
|
|
|
|
|
|
|
для: PAT
(07.10.2008 в 03:45)
| | Разумно. Но может человеку требуется именно, чтобы пользователь именно не смог ввести больше, чем N символов. Ну а предупреждение о максимальной длине само собой должно быть =). Можно ещё alert сделать, когда количество символов превышено =). | |
|
|
|
|
|
|
|
для: Nytrogen
(07.10.2008 в 16:56)
| | Да, конечно, можно "звякнуть" алертом, что, мол, кончай писать, дурик...
Но один ONKEYUP тут не поможет.
Клиент может же вставить сразу много символов из буфера (при помощи мыши).
А событие ONPASTE и ONPROPERTYCHANGE понимает только Explorer.
Да и алерт тут не самое подходящее окошко...
Если уж поставить себе задачу оповестить клиента о том, что он "оченНО многА" пишет, то надо включать setInterval по событию ONFOCUS на TEXTAREA и периодически проверять длину VALUE этого TEXTAREA. Как только произойдёт ONBLUR - setInterval выключить, проверив перед этим в последний раз.
Ну и в случае превышения лимита выдавать клиенту не алерт, а конфирм - с предупреждением, что, мол, уже N символов "лишних" написано и с вопросом-выбором "Будете писать дальше в мусорную корзину? Да/Нет" :-) | |
|
|
|
|
|
|
|
для: velgandr
(06.10.2008 в 17:01)
| |
<textarea name="limit" cols="67" rows="2" id="description"
onFocus="this.style.background='#e0f7bd'"
onBlur="this.style.background='#FFFFFF'">
<?php echo $_POST['description'] ?></textarea>
<script type="text/javascript">
var ns6=document.getElementById &&!document.all
function restrictinput(maxlength, e, placeholder)
{
if (window.event && event.srcElement.value.length >= maxlength)
return false;
else if (e.target && e.target == eval(placeholder) && e.target.value.length >= maxlength)
{
var pressedkey = /[a-zA-Z0-9\.\,\/]/;
if (pressedkey.test(String.fromCharCode(e.which)))
e.stopPropagation();
}
}
function countlimit(maxlength, e, placeholder)
{
var theform = eval(placeholder);
var lengthleft = maxlength-theform.value.length;
var placeholderobj = document.all ? document.all[placeholder] : document.getElementById(placeholder);
if (window.event || e.target&&e.target == eval(placeholder))
{
if (lengthleft < 0)
theform.value = theform.value.substring(0, maxlength);
placeholderobj.innerHTML = lengthleft
}
}
function displaylimit(thename, theid, thelimit)
{
var theform = theid != "" ? document.getElementById(theid) : thename;
var limit_text = 'можно ввести <span id="' + theform.toString() + '">' + thelimit + '</span> символов';
if (document.all || ns6)
document.write(limit_text)
if (document.all)
{
eval(theform).onkeypress = function(){ return restrictinput(thelimit, event, theform)}
eval(theform).onkeyup = function(){ countlimit(thelimit, event, theform)}
}
else if (ns6)
{
document.body.addEventListener('keypress', function(event) { restrictinput(thelimit, event, theform) }, true);
document.body.addEventListener('keyup', function(event) { countlimit(thelimit, event, theform) }, true);
}
}
displaylimit("document.limitForm.limit", "", 160 );
</script>
|
Ограничивает и визуально показывает сколько осталось...выдрал из проекта полностью рабочий.... | |
|
|
|
|
|
|
|
для: serjinio
(09.10.2008 в 00:05)
| | >"Ограничивает и визуально показывает сколько осталось... полностью рабочий"
Это точно.
Рабочий! :-)
Особливо если способом "копи-пасте" ввести туда туеву хучу символов и нажать потом любую клавишу.
Скрипт УВЕРЕННО пишет, что "можно ввести минус2000 символов" :-) | |
|
|
|
|
|
|
|
для: PAT
(09.10.2008 в 01:08)
| | Скрипт был для админки, и если проблема с символами, то надо самому вставить регулярку...для проверки вводимых данных....он не для этого предназначен:)....предложите лучше!!! | |
|
|
|
|
|
|
|
для: serjinio
(09.10.2008 в 18:21)
| | А вообще можно ли ограничить ? Пожалуйста очень надо, помогите с вопросом. | |
|
|
|
|
|
|
|
для: Doorgen
(26.12.2008 в 19:19)
| | Все я сделал. | |
|
|
|