글자 너비를 반각 18자까지 확장
This commit is contained in:
+1
-1
@@ -196,7 +196,7 @@ foreach ($troops as $troopNo=>$troop) {
|
||||
<table width=1000 class='tb_layout bg0'>
|
||||
<tr>
|
||||
<td width=80 id=bg1>부 대 명</td>
|
||||
<td width=130><input type=text style=color:white;background-color:black; size=18 maxlength=9 name=name></td>
|
||||
<td width=130><input type=text style=color:white;background-color:black; size=18 maxlength=18 name=name></td>
|
||||
<?php if($me['troop'] == 0): ?>
|
||||
<td><input type=submit name=btn value='부 대 창 설'></td>
|
||||
<?php else: ?>
|
||||
|
||||
@@ -19,6 +19,11 @@ $db = DB::db();
|
||||
|
||||
$me = $db->queryFirstRow('SELECT `no`, nation, troop FROM general WHERE `owner`=%i', $userID);
|
||||
|
||||
|
||||
if($name && mb_strwidth($name) > 18){
|
||||
$name = mb_strimwidth($name, 0, 18);
|
||||
}
|
||||
|
||||
$name = trim($name);
|
||||
if($btn == "부 대 창 설" && $name != "" && $me['troop'] == 0) {
|
||||
$db->insert('troop',[
|
||||
|
||||
@@ -38,8 +38,8 @@ $defaultCheck = [
|
||||
'integerArray'=>[
|
||||
'destNationIDList', 'destGeneralIDList'
|
||||
],
|
||||
'lengthBetween'=>[
|
||||
['nationName', 1, 9]
|
||||
'stringWidthBetween'=>[
|
||||
['nationName', 1, 18]
|
||||
]
|
||||
];
|
||||
|
||||
|
||||
+1
-1
@@ -92,7 +92,7 @@ echo getInvitationList($nationList);
|
||||
<tr>
|
||||
<td width=498 align=right id=bg1>장수명</td>
|
||||
<td colspan=2>
|
||||
<input type=text name=name maxlength=9 size=18 style=color:white;background-color:black; value=<?=$member['name']?>>(9글자 이내)
|
||||
<input id="generalName" type=text name=name maxlength=18 size=18 style="color:white;background-color:black;" value="<?=$member['name']?>">(전각 9글자, 반각 18글자 이내)
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
|
||||
+3
-3
@@ -18,7 +18,7 @@ $v
|
||||
'intel',
|
||||
'character',
|
||||
])
|
||||
->rule('lengthBetween', 'name', 1, 9)
|
||||
->rule('stringWidthBetween', 'name', 1, 18)
|
||||
->rule('min', [
|
||||
'leader',
|
||||
'power',
|
||||
@@ -98,14 +98,14 @@ if ($gameStor->maxgeneral <= $gencount) {
|
||||
</script>");
|
||||
exit;
|
||||
}
|
||||
if (mb_strlen($name) < 1) {
|
||||
if ($name == '') {
|
||||
echo("<script>
|
||||
window.alert('이름이 짧습니다. 다시 가입해주세요!')
|
||||
history.go(-1)
|
||||
</script>");
|
||||
exit;
|
||||
}
|
||||
if (mb_strlen($name) > 9) {
|
||||
if (mb_strwidth($name) > 18) {
|
||||
echo("<script>
|
||||
window.alert('이름이 유효하지 않습니다. 다시 가입해주세요!')
|
||||
history.go(-1)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))){
|
||||
|
||||
+2
-2
@@ -1306,7 +1306,7 @@ function command_46($turn, $command) {
|
||||
- 명 가 : <font color=cyan>기술↑ 인구↑</font> <font color=magenta>쌀수입↓ 수성↓</font><br>
|
||||
|
||||
<form name=form1 action=c_double.php method=post>
|
||||
국명 : <input type=text name=name size=18 maxlength=9 style=text-align:right;color:white;background-color:black>
|
||||
국명 : <input type=text name=name size=18 maxlength=18 style=text-align:right;color:white;background-color:black>
|
||||
색깔 : <select name=double size=1>
|
||||
<?php
|
||||
foreach(GetNationColors() as $idx=>$color) {
|
||||
@@ -1643,7 +1643,7 @@ function command_53($turn, $command) {
|
||||
|
||||
echo "
|
||||
</select>
|
||||
통합국명 : <input type=text name=nationname size=18 maxlength=9 style=text-align:right;color:white;background-color:black>
|
||||
통합국명 : <input type=text name=nationname size=18 maxlength=18 style=text-align:right;color:white;background-color:black>
|
||||
<input type=submit value=통합제의>
|
||||
<input type=hidden name=command value=$command>";
|
||||
for($i=0; $i < count($turn); $i++) {
|
||||
|
||||
@@ -17,6 +17,7 @@ use function \sammo\{
|
||||
|
||||
use \sammo\Constraint\Constraint;
|
||||
use sammo\CityConst;
|
||||
use function sammo\getNationTypeClass;
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +27,7 @@ class che_건국 extends Command\GeneralCommand{
|
||||
protected function argTest():bool{
|
||||
$nationName = $this->arg['nationName']??null;
|
||||
$nationType = $this->arg['nationType']??null;
|
||||
$colorType = $this->arg['colotType']??null;
|
||||
$colorType = $this->arg['colorType']??null;
|
||||
|
||||
if($nationName === null || $nationType === null || $colorType === null){
|
||||
return false;
|
||||
@@ -36,6 +37,23 @@ class che_건국 extends Command\GeneralCommand{
|
||||
return false;
|
||||
}
|
||||
|
||||
if(mb_strwidth($nationName) > 18){
|
||||
return false;
|
||||
}
|
||||
|
||||
try{
|
||||
$nationTypeClass = getNationTypeClass($nationType);
|
||||
}
|
||||
catch(InvalidArgumentException $e){
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->arg = [
|
||||
'nationName'=>$nationName,
|
||||
'nationType'=>$nationType,
|
||||
'colorType'=>$colorType
|
||||
];
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,59 @@ var escapeHtml = (function (string) {
|
||||
}
|
||||
})();
|
||||
|
||||
;(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로 재 변환
|
||||
|
||||
+8
-1
@@ -42,6 +42,13 @@ function changeInstallMode(){
|
||||
}
|
||||
|
||||
$(document).ready( function () {
|
||||
jQuery.validator.addMethod("minwidth", function(value, element, params) {
|
||||
return this.optional(element) || mb_strwidth(value) >= params;
|
||||
}, "글자 너비가 알파벳 {0} 자보다 길어야합니다");
|
||||
jQuery.validator.addMethod("maxwidth", function(value, element, params) {
|
||||
return this.optional(element) || mb_strwidth(value) <= params;
|
||||
}, "글자 너비가 알파벳 {0} 자보다 짧아야합니다");
|
||||
|
||||
changeInstallMode();
|
||||
var parentPathname = location.pathname.split('/').slice(0,-2).join('/');
|
||||
$('#serv_host').val(
|
||||
@@ -133,7 +140,7 @@ $(document).ready( function () {
|
||||
},
|
||||
nickname:{
|
||||
required: true,
|
||||
maxlength: 9,
|
||||
maxwidth: 18,
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
$(document).ready( function () {
|
||||
jQuery.validator.addMethod("minwidth", function(value, element, params) {
|
||||
return this.optional(element) || mb_strwidth(value) >= params;
|
||||
}, "글자 너비가 알파벳 {0} 자보다 길어야합니다");
|
||||
jQuery.validator.addMethod("maxwidth", function(value, element, params) {
|
||||
return this.optional(element) || mb_strwidth(value) <= params;
|
||||
}, "글자 너비가 알파벳 {0} 자보다 짧아야합니다");
|
||||
$( "#main_form" ).validate( {
|
||||
rules: {
|
||||
username: {
|
||||
@@ -28,7 +34,7 @@ $(document).ready( function () {
|
||||
},
|
||||
nickname:{
|
||||
required: true,
|
||||
maxlength: 9,
|
||||
maxwidth: 18,
|
||||
remote: {
|
||||
url: "j_check_dup.php",
|
||||
type: "post",
|
||||
|
||||
@@ -25,8 +25,8 @@ function checkNicknameDup($nickname){
|
||||
return '닉네임을 입력해주세요';
|
||||
}
|
||||
|
||||
$length = mb_strlen($nickname, 'utf-8');
|
||||
if($length < 1 || $length > 9){
|
||||
$length = mb_strwidth($nickname, 'utf-8');
|
||||
if($length < 1 || $length > 18){
|
||||
return '적절하지 않은 길이입니다.';
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user