计算存储在mysql中的剩余字符

时间:2015-01-15 13:05:49

标签: javascript php jquery mysql

我在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/ 我该如何修复这些错误?

感谢。

2 个答案:

答案 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;
    }

这个简单的代码就完成了你的任务。

如果您仍需要帮助,请随时发表评论。