글자 너비를 반각 18자까지 확장

This commit is contained in:
2018-10-29 02:39:23 +09:00
parent 2cc0150bec
commit 13fab5ebe4
13 changed files with 174 additions and 14 deletions
+54
View File
@@ -32,6 +32,60 @@ function isInt(n) {
return +n === n && !(n % 1);
}
;(function(ns){
//https://gist.github.com/demouth/3217440
/**
* mb_strwidth
* @param String
* @return int
* @see http://php.net/manual/ja/function.mb-strwidth.php
*/
var mb_strwidth = function(str){
var i=0,l=str.length,c='',length=0;
for(;i<l;i++){
c=str.charCodeAt(i);
if(0x0000<=c&&c<=0x0019){
length += 0;
}else if(0x0020<=c&&c<=0x1FFF){
length += 1;
}else if(0x2000<=c&&c<=0xFF60){
length += 2;
}else if(0xFF61<=c&&c<=0xFF9F){
length += 1;
}else if(0xFFA0<=c){
length += 2;
}
}
return length;
};
/**
* mb_strimwidth
* @param String
* @param int
* @param int
* @param String
* @return String
* @see http://www.php.net/manual/ja/function.mb-strimwidth.php
*/
var mb_strimwidth = function(str,start,width,trimmarker){
if(typeof trimmarker === 'undefined') trimmarker='';
var trimmakerWidth = mb_strwidth(trimmarker),i=start,l=str.length,trimmedLength=0,trimmedStr='';
for(;i<l;i++){
var charCode=str.charCodeAt(i),c=str.charAt(i),charWidth=mb_strwidth(c),next=str.charAt(i+1),nextWidth=mb_strwidth(next);
trimmedLength += charWidth;
trimmedStr += c;
if(trimmedLength+trimmakerWidth+nextWidth>width){
trimmedStr += trimmarker;
break;
}
}
return trimmedStr;
};
ns.mb_strwidth = mb_strwidth;
ns.mb_strimwidth = mb_strimwidth;
})(window);
/**
* object의 array를 id를 key로 삼는 object로 재 변환
* @param {Array.{id: Object}} arr id를 가진 object의 array
+17
View File
@@ -164,7 +164,24 @@ jQuery(function($){
}
});
var $generalName = $('#generalName');
if($generalName.on('change keyup paste', function(){
var generalName = $generalName.val();
var len = mb_strwidth(generalName);
if(len == 0 || len > 18){
$generalName.css('color','red');
}
else{
$generalName.css('color','white');
}
}));
$('#join_form').submit(function(){
var generalName = $generalName.val();
if(mb_strwidth(generalName) > 18){
alert('장수 이름이 너무 깁니다!');
return false;
}
var currentStatTotal = parseInt($leader.val()) + parseInt($power.val()) + parseInt($intel.val());
if(currentStatTotal < defaultStatTotal){
if(!confirm('현재 능력치 총합은 {0}으로, {1}보다 낮습니다. 장수 생성을 진행할까요?'.format(currentStatTotal, defaultStatTotal))){