我正在创建短信发件人。我有一个文本框。现在我正在使用jQuery Keyup事件来计算文本长度。
class Users extends BaseUser
{
...
public function __construct()
{
parent::__construct();
$this->parcs = new ArrayCollection();
// your own logic
}
但对于特殊字符短信计数2(如Ş,ş,Ğ,ğ,ç,ı,İ)
当我输入上面的字符时,我想要算作两个字符。 jQuery是否有任何多字节字符函数?
答案 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);
})