用于SMS的jQuery Keyup Count TextLength

时间:2015-09-04 13:23:27

标签: jquery sms keyup

我正在创建短信发件人。我有一个文本框。现在我正在使用jQuery Keyup事件来计算文本长度。

class Users extends BaseUser
{
    ...

    public function __construct()
    {
        parent::__construct();
        $this->parcs = new ArrayCollection();
        // your own logic
    }

但对于特殊字符短信计数2(如Ş,ş,Ğ,ğ,ç,ı,İ)

当我输入上面的字符时,我想要算作两个字符。 jQuery是否有任何多字节字符函数?

enter image description here

2 个答案:

答案 0 :(得分:0)

只需包含一个if块,用于检查按下的键的字符代码(如果它是上面提到的那个)

<script type="text/javascript">
var codes = ["Ş", "ş", "Ğ", "ğ", "ç", "ı", "İ"];
    $('#sms').keyup(function(e){
     if($.inArray(e.charCode, codes)){
         //double value
    }else{    
         //normal value
    }
    })
</script>

答案 1 :(得分:0)

这是我的HTML代码

<form>
    <div class="form-group">
        <label for="sms">SMS</label>
        <textarea rows="5" class="form-control" id="sms" name="sms" maxlength="745"></textarea>
        <span class="pull-right"><span id="smslength">0</span> / <span id="maxsmslength">745</span> [SMS Adeti: <span id="smscount">0</span>]</span>
    </div>
    <button type="submit" class="btn btn-default">SMS Gönder</button>
</form>

这是我的jQuery代码

<script type="text/javascript">
    $('#sms').keyup(function(){
        doubleChars = ["Ş", "ş", "Ğ", "ğ", "ç", "ı", "İ"];

        sms = $(this).val();
        textlength = sms.length;

        smslength = 0;

    if(textlength > 0){
            for(i=0; i < textlength; i++){
                if($.inArray(sms.charAt(i), doubleChars) !== -1){
                    //double value
                    smslength += 2;
                }else{    
                    //normal value
                    smslength++
                }
            }
        }

        $('#smslength').html(smslength);

        if(smslength == 0){
            smscount = 0;
        } else if(smslength > 0 && smslength <= 155){
            smscount = 1;
        } else if(smslength > 155 && smslength <= 298){
            smscount = 2;
        } else if(smslength > 298 && smslength <= 447){
            smscount = 3;
        } else if(smslength > 447 && smslength <= 596){
            smscount = 4;
        } else if(smslength > 596 && smslength <= 745){
            smscount = 5;
        }

        $('#smscount').html(smscount);
    })