我在mysql数据库中有一个名为DESC的列。我将它设置为Varchar(255)latin-1。
在将数据存储在mysql数据库之前,我使用
filter_var(mysqli_real_escape_string($value),FILTER_SANITIZE_SPECIAL_CHARS)
我的问题是如何实现jquery字符计数和maxlength限制,并能够检索&显示textarea的所有数据?
我的伪代码
// Set MaxLength to 255
max= 255;
// Get length of textarea
$(this).val().length
// Count how many &, <,>,",' then multiply by 4 (as each of these characters will convert into &#??? which add extra 4 characters into database) and Newline (add extra 1 character) in the textarea.
CountSpecial($(this).val()); //bug #1
// calculate remaining characters.
Remaining = max - $(this).val().length -CountSpecial($(this).val());
//Limit the data to varchar(255) to avoid data truncation.
If (Remaining <0) {
//truncate to fix varchar(255)
$(this).val($this.val().substring(0,$this.val().length+Remaining); //bug#2
//recalculate Remaining.
Remaining = max - $(this).val().length -CountSpecial($(this).val());
}
Bug#1,我不知道如何准确计算将额外的字符存储到数据库中
Bug#2我试过
$(this).val($this.val().substring(0,$this.val().length-1);
但它没有按照我想要的方式运行,因为我使用的是键盘功能,如果用户持续按住键,则此计算将不起作用。
$(this).val($this.val().substring(0,$this.val().length+Remaining);
修复了用户持续按键时的问题,但产生了其他问题。如果用户键入&#34;&amp;&#34;它将从textarea中删除最后4个字符而不是1。
这是我的原始代码 http://jsfiddle.net/seth1111/orLh4v4w/5/ 我该如何修复这些错误?
感谢。
答案 0 :(得分:0)
您可以使用javascript中的String.match函数检查特殊字符和新行。
realLength = $(this).val().length;
specialCarLength = $(this).val().match(/[&"',<>]/g);
specialCarLength = specialCarLength === null ? 0 : specialCarLength.length * 4;
NewLineCarLength = $(this).val().match(/\n/g);
NewLineCarLength = NewLineCarLength === null ? 0 : NewLineCarLength.length * 2;
NormalCarLength = realLength-specialCarLength/4-NewLineCarLength/2;
检查我的jsFiddle,它演示了如何匹配特殊字符和新行:jsFiddle
答案 1 :(得分:0)
您可以通过这个简单的代码创建一个jQuery剩余字符计数器。
$(function() {
$(document).on('keyup paste', '#address', function (e) {
var value = $(this).val();
var limit = 10; // Max character you want to allow
var length = value.length;
var remaining = parseInt(limit - length);
$('#result').html(remaining+' Character(s) Remainig');
if(length < limit)
{
$('#result').show();
$('#error').hide().removeClass('error').html('');
}
else if(length > limit)
{
$('#result').hide();
this.value = this.value.substring(0, limit);
$('#error').show().addClass('error').html('Maximum ' +limit+ ' Characters are allowed!');
}
});
});
HTML部分
Enter Address: <textarea cols="21" rows="5" name="address" id="address"></textarea>
<p id="result"></p>
<p id="error" style="display:none;"></p>
错误类的CSS
.error{
color:#f00 !important;
}
这个简单的代码就完成了你的任务。
如果您仍需要帮助,请随时发表评论。