通过Javascript和PHP的textarea字符限制

RLJ*_*RLJ 8 javascript php textarea character limit

我使用2种方法来检查用户是否在textarea中输入了太多字符:

1)(被动)PHP:

$textarea = $_POST['textarea'];
if (strlen($textarea)>300){$verify="bad";}
Run Code Online (Sandbox Code Playgroud)

2)(active-whyle打字)Javascript:

function ismaxlength(obj)
{
   var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : ""
   if (obj.getAttribute && obj.value.length>mlength)
   obj.value=obj.value.substring(0,mlength)
}
Run Code Online (Sandbox Code Playgroud)

textarea本身如下(html):

<textarea name="textarea" id="textarea" cols="40" rows="5" style="border: 1px solid #480091; width:460px;" wrap="soft" maxlength="300" onpaste="return ismaxlength(this)" onkeyup="return ismaxlength(this)"></textarea>
Run Code Online (Sandbox Code Playgroud)

两种方法都有效,除了PHP strlen()函数似乎计算返回(换行符)与我的Javascript函数不同.

有没有人知道如何解决这个问题,所以他们都计算相同的#字符,无论换行符和空格等.

非常感谢!

Tha*_*hai 4

您必须先转换换行符。在 JavaScript 中,换行符是单个换行符。发送的时候有两个。您可以将它们标准化:

$textarea = $_POST['textarea'];
$textarea = str_replace("\r\n", "\n", $textarea);
$textarea = str_replace("\r", "\n", $textarea);
Run Code Online (Sandbox Code Playgroud)

然后你可以计算文本区域的长度。