Въпрос за textarea

Galli

Registered
Има ли начин огранича броя на символите както при input с maxlenght?
Направих го така:
Код:
<textarea pref='Не повече от 200 символа' onkeyup='if(this.value.length<200){this.pref=this.value}else{this.value=this.pref;};'...
Но като копирам текст, а не го пиша, това не действа.
 
Код:
 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Символи</title>

<SCRIPT LANGUAGE="JavaScript">
// Параметрите на функцията са: field - поредицата поле, count - оставаши полета и max - максималния брой от символи
function CountLeft(field, count, max) {
// ако йелаете по голяма дължина в полето max го променете.
if (field.value.length > max)
field.value = field.value.substring(0, max);
else
// Пресмята оставащите символи
count.value = max - field.value.length;
}
</script>

</head>

<body>

<center>
<form name=sample action="">
<font size="1" face="arial, helvetica, sans-serif"> Само 200 символа
са възможни
<textarea rows=5 cols=60 name="text" type="text"
onKeyDown="CountLeft(this.form.text,this.form.left,200);"
onKeyUp="CountLeft(this.form.text,this.form.left,200);"></textarea>
<input readonly type="text" name="left" size=3 maxlength=3 value="200">
Символа остават</font>

</form>
</center>

</body></html>
 
Нито един от начините, които пробвах не ограничи Paste. Това с червеното искам да огранича. Това е част от upload.php на тракер и се записва в ДБ.
<div align=Center>
<form enctype="multipart/form-data" action="takeupload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="<?=$max_torrent_size?>" />
<p>The tracker's announce url is <b><?= $announce_urls[0] ?></b></p>
<table border="1" cellspacing="0" cellpadding="10">
<?

tr("Torrent file", "<input type=file name=file size=80>\n", 1);
tr("Torrent name", "<input type=\"text\" name=\"name\" size=\"80\" /><br />(Taken from filename if not specified. <b>Please use descriptive names.</b>)\n", 1);
tr("NFO file", "<input type=file name=nfo size=80><br>(<b>Required.</b> Can only be viewed by power users.)\n", 1);
tr("Poster", "<input type=text name=poster size=80><br>(Direct link for a poster image to be shown on the details page)\n", 1);
tr("Description", "<textarea name=\"descr\" rows=\"9\" cols=\"80\"></textarea>" .
"<br>(HTML/BB code is <b>not</b> allowed.)", 1);

$s = "<select name=\"type\">\n<option value=\"0\">(choose one)</option>\n";

$cats = genrelist();
foreach ($cats as $row)
$s .= "<option value=\"" . $row["id"] . "\">" . htmlspecialchars($row["name"]) . "</option>\n";

$s .= "</select>\n";
tr("Type", $s, 1);

?>
<tr><td align="center" colspan="2"><input type="submit" class=btn value="Do it!" /></td></tr>
</table>
</form>
 
Код:
 <SCRIPT LANGUAGE="JavaScript">
function CountLeft(field, count, max) {
if (field.value.length > max)
field.value = field.value.substring(0, max);
else
count.value = max - field.value.length;
}
</script>


Код:
<textarea rows=\"9\" cols=\"80\" name=\"descr\" type=\"text\"
onKeyDown=\"CountLeft(this.form.descr,this.form.left,200);\"
onKeyUp=\"CountLeft(this.form.descr,this.form.left,200);\"></textarea>

Ето готов си :)
 
И това не действа при пейст на 10000... символа, а само ако пиша от клавиатурата. Стига съм ви мъчил :lol: за сега направих полето в БД на Description да е varchar(200) и така ги реже със сигурност. :D
 
Galli каза:
И това не действа при пейст на 10000... символа, а само ако пиша от клавиатурата. Стига съм ви мъчил :lol: за сега направих полето в БД на Description да е varchar(200) и така ги реже със сигурност. :D
E така пак ще се виждат броя на символите, но ще се записват първите 200 от тях :) Не е това решението. Аз не го знам. :cry:
 
jooorooo каза:
Код:
 <SCRIPT LANGUAGE="JavaScript">
function CountLeft(field, count, max) {
if (field.value.length > max)
field.value = field.value.substring(0, max);
else
count.value = max - field.value.length;
}
</script>


Код:
<textarea rows="9" cols="80" name="descr" type="text"
onKeyDown="CountLeft(this.form.descr,this.form.left,200);"
onKeyUp="CountLeft(this.form.descr,this.form.left,200);"></textarea>

Ето готов си :)

Това не е възможно да не работи. ти някъде бъркаш нещо. тексареата съм я направил направо да я заместиш с твоята, а скрипта трябва да е в head тага
 
Добре значи аз съм оплескал нещо. Ето как изглежда:
<?

require_once("include/bittorrent.php");
hit_start();

dbconn(false);

hit_count();

loggedinorreturn();

stdhead("Upload");

if (get_user_class() < UC_UPLOADER)
{
stdmsg("Съжалявам...", "За да можеш да ъплоудваш торенти е нужно да си ъплоудер ! (Виж <a href=\"faq.php#up\">Uploading</a> в FAQ секцията на сайта.)");
stdfoot();
exit;
}

?>
<html><head>
<SCRIPT LANGUAGE="JavaScript">
function CountLeft(field, count, max) {
if (field.value.length > max)
field.value = field.value.substring(0, max);
else
count.value = max - field.value.length;
}
</script>
</head><body>


<div align=Center>
<form enctype="multipart/form-data" action="takeupload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="<?=$max_torrent_size?>" />
<p>The tracker's announce url is <b><?= $announce_urls[0] ?></b></p>
<table border="1" cellspacing="0" cellpadding="10">
<?

tr("Torrent file", "<input type=file name=file size=80>\n", 1);
tr("Torrent name", "<input type=\"text\" name=\"name\" size=\"80\" /><br />(Taken from filename if not specified. <b>Please use descriptive names.</b>)\n", 1);
tr("NFO file", "<input type=file name=nfo size=80><br>(<b>Required.</b> Can only be viewed by power users.)\n", 1);
tr("Poster", "<input type=text name=poster size=80><br>(Direct link for a poster image to be shown on the details page)\n", 1);
tr("Description", "<textarea rows=\"9\" cols=\"80\" name=\"descr\" type=\"text\"
onKeyDown=\"CountLeft(this.form.descr,this.form.left,200);\"
onKeyUp=\"CountLeft(this.form.descr,this.form.left,200);\"></textarea>
" .
"<br>(Maximum characters <b>200</b>. HTML/BB code is <b>not</b> allowed.)", 1);

$s = "<select name=\"type\">\n<option value=\"0\">(choose one)</option>\n";

$cats = genrelist();
foreach ($cats as $row)
$s .= "<option value=\"" . $row["id"] . "\">" . htmlspecialchars($row["name"]) . "</option>\n";

$s .= "</select>\n";
tr("Type", $s, 1);

?>
<tr><td align="center" colspan="2"><input type="submit" class=btn value="Upload" /></td></tr>
</table>
</form>
</body></html>
<?

stdfoot();

hit_end();

?>
 
правилно си го направил.. не виждам от къде може да е проблема...

П.П. пробвай ето така:

Код:
<textarea rows=9 cols=80 name=descr type=text
onKeyDown=CountLeft(this.form.descr,this.form.left,200);
onKeyUp=CountLeft(this.form.descr,this.form.left,200);></textarea>
 

Back
Горе