【发布时间】:2010-06-03 20:07:18
【问题描述】:
烦人的大脑麻木问题。
我有两个函数来检查字符串的长度(主要是 js 一个也被截断)继承人 Javascript 中的一个:
$('textarea#itemdescription').keyup(function() {
var charLength = $(this).val().length;
// Displays count
$('span#charCount').css({'color':'#666'});
$('span#charCount').html(255 - charLength);
if($(this).val().length >= 240){
$('span#charCount').css({'color':'#FF0000'});
}
// Alerts when 250 characters is reached
if($(this).val().length >= 255){
$('span#charCount').css({'color':'#FF0000'});
$('span#charCount').html('<strong>0</strong>');
var text = $('textarea#itemdescription').val().substring(0,255)
$('textarea#itemdescription').val(text);
}
});
这是我要仔细检查的 PHP:
if(strlen($_POST["description"])>255){
echo "Description must be less than ".strlen($_POST["description"])." characters";
exit();
}
我正在使用 jQuery Ajax 发布来自 textarea 的值。但是我的 php 验证说 strlen() 比我的 js 本质上说的要长。因此,例如,如果我输入一个实心字符串,它显示 0 或 3 个字符,直到 255。然后我点击保存,php 给我的长度为 261。
有什么想法吗?
是不是跟特殊字符、js读取不同或者漏掉的位大小有关?还是与其他事情有关?也许今天病了!...:P
更新:
我加了var_dump($_POST['description'])
查看通过了什么,它正在返回转义斜线,例如这是怎么回事?我试过添加 stripslashes();无济于事......他们来自哪里?
更新 2 - 问题已解决:
基本上我想我刚刚意识到我的服务器开启了魔术引号...grr 所以我现在在处理之前已经剥离了斜线。有点烦人,但必须这样做!
感谢您的帮助!
谢谢, 斯蒂芬
【问题讨论】:
-
使用 .html() 而不是 .val() 会发生什么?
标签: php javascript jquery strlen