866 lines
20 KiB
JavaScript
866 lines
20 KiB
JavaScript
/**
|
|
* 휴대폰번호 유효성 체크
|
|
* true, false 반환
|
|
* 대시 유무 상관없음
|
|
*/
|
|
function checkHpNum(str) {
|
|
|
|
var regExp = /^(050[234567]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$/;
|
|
//var regExp = /^(01[016789]{1}|070|02|0[3-9]{1}[0-9]{1})-?[0-9]{3,4}-?[0-9]{4}$/; //지역번호(일반전화) 형식까지 체크해주는 정규식
|
|
return regExp.test(str);
|
|
}
|
|
|
|
/**
|
|
* 휴대폰번호만 유효성 체크
|
|
* true, false 반환
|
|
* 대시 유무 상관없음
|
|
*/
|
|
function checkOnlyHpNum(str) {
|
|
|
|
//var regExp = /^(050[234567]{1}|01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$/;
|
|
var regExp = /^(01[016789]{1})-?[0-9]{3,4}-?[0-9]{4}$/; //지역번호(일반전화) 형식까지 체크해주는 정규식
|
|
return regExp.test(str);
|
|
}
|
|
|
|
/**
|
|
* 팩스 번호 유효성 체크
|
|
* true, false 반환
|
|
* 앞 3자리를 체크 함
|
|
* -- 전국 지역번호
|
|
* 02 서울특별시
|
|
031 경기도
|
|
032 인천광역시
|
|
033 강원도
|
|
041 충청남도
|
|
042 대전광역시
|
|
043 충청북도
|
|
044 세종특별자치시
|
|
051 부산광역시
|
|
052 울산광역시
|
|
053 대구광역시
|
|
054 경상북도
|
|
055 경상남도
|
|
061 전라남도
|
|
062 광주광역시
|
|
063 전라북도
|
|
064 제주특별자치도
|
|
|
|
-- 타사부가번호
|
|
030*
|
|
050*
|
|
060
|
|
070
|
|
080
|
|
1**
|
|
|
|
위 번호로 시작하는 팩스 번호만 허용함.
|
|
*/
|
|
function checkFaxNum(str) {
|
|
str = removeDash(str);
|
|
var subNum = str.substring(0,3);
|
|
var regExp = /^(02[0-9]{1}|030|050|060|070|080|0[3-6]{1}[1-5]{1}|1[0-9]{1}[0-9]{1})$/; //지역번호(일반전화) 형식까지 체크해주는 정규식
|
|
return regExp.test(subNum);
|
|
}
|
|
|
|
/*
|
|
* 일반전화 유효성 체크
|
|
* true, false 반환
|
|
*
|
|
* */
|
|
function checkNorPhoneNum(str){
|
|
|
|
var regExp = /^(02|0[3-9]{1}[0-9]{1})-?[0-9]{3,4}-?[0-9]{4}$/;
|
|
|
|
/**
|
|
* 기간통신사업자 공통 부가서비스 번호 체크
|
|
* 번호 사업자
|
|
1588,1577,1899 KT
|
|
1544,1644,1661,1800 ,1833 LG유플러스
|
|
1566,1600,1670 SK브로드밴드
|
|
1688,1666 온세텔레콤
|
|
1599 SK텔링크
|
|
1877 한국케이블텔레콤
|
|
1855 CJ헬로비전
|
|
1661 alleh KT
|
|
*
|
|
* */
|
|
|
|
if(str.substring(0,2) == "15"){
|
|
|
|
regExp = /^(15[0-9]{2})-?[0-9]{4}$/;
|
|
|
|
}else if(str.substring(0,2) == "16"){
|
|
|
|
regExp = /^(16[0-9]{2})-?[0-9]{4}$/;
|
|
|
|
}else if(str.substring(0,2) == "18"){
|
|
|
|
regExp = /^(18[0-9]{2})-?[0-9]{4}$/;
|
|
|
|
}
|
|
|
|
return regExp.test(str);
|
|
}
|
|
|
|
/*
|
|
* 일반전화 / 핸드폰 번호 종류 확인
|
|
* true, false 반환
|
|
*
|
|
* */
|
|
function checkTelHpType(str){
|
|
|
|
var subCall = str.substring(0,3); // 전화번호 앞 3자리 받아오기
|
|
var strType = ""; // 결과 반환
|
|
|
|
if(subCall != '010'
|
|
&& subCall != '011'
|
|
&& subCall != '016'
|
|
&& subCall != '017'){//일반전화 번호이면
|
|
|
|
strType = "Tel";
|
|
|
|
}else{
|
|
|
|
strType = "Hp";
|
|
}
|
|
|
|
return strType;
|
|
}
|
|
|
|
|
|
/**
|
|
* 휴대폰번호 대시('-') 제거
|
|
*/
|
|
function removeDash(str) {
|
|
var regExp = new RegExp('-', 'g');
|
|
return str.replace(regExp, '');
|
|
}
|
|
|
|
/**
|
|
* 휴대폰번호 대시('-') 추가
|
|
* 대시 유무 상관없음
|
|
* 유효성 맞지 않을시 변환안됨.
|
|
*/
|
|
function addDash(str) {
|
|
return str.replace(/(^01[016789]{1}|070)([0-9]{3}|[0-9]{4})([0-9]{4})$/,"$1-$2-$3").replace("--", "-");
|
|
}
|
|
|
|
/**
|
|
* ReplaceAll (by javascript prototype)
|
|
* 정규식 패턴에서 \는 두 개 사용
|
|
*/
|
|
String.prototype.replaceAll = function(pattern, changeString) {
|
|
var regExp = new RegExp(pattern, 'g');
|
|
return this.replace(regExp, changeString);
|
|
};
|
|
|
|
/**
|
|
* 이메일 유효성 체크
|
|
* true, false 반환
|
|
*
|
|
*/
|
|
function checkEmail(str) {
|
|
var regExp = /^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/;
|
|
return regExp.test(str);
|
|
}
|
|
|
|
/**
|
|
* XSS 체크하기
|
|
*
|
|
*
|
|
*/
|
|
|
|
function XSSCheck(str, level) {
|
|
if (level == undefined || level == 0) {
|
|
str = str.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-/g,"");
|
|
} else if (level != undefined && level == 1) {
|
|
str = str.replace(/\</g, "<");
|
|
str = str.replace(/\>/g, ">");
|
|
}
|
|
return str;
|
|
}
|
|
|
|
|
|
//숫자 천단위 콤마 찍어주기
|
|
function numberWithCommas(x) {
|
|
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
}
|
|
|
|
function comma(num){
|
|
var len, point, str;
|
|
num = num + "";
|
|
point = num.length % 3;
|
|
len = num.length;
|
|
str = num.substring(0, point);
|
|
while (point < len) {
|
|
if (str != "") str += ",";
|
|
str += num.substring(point, point + 3);
|
|
point += 3;
|
|
}
|
|
return str;
|
|
}
|
|
|
|
|
|
function totalPriceSum(totRows){
|
|
|
|
var contents = $('#smsTxtArea').val(); //입력 문자 내용
|
|
var msgType = conTypeCheck(contents); //입력 문자 길이 체크
|
|
var collNumCnt = parseInt(totRows); //받는사람 건수
|
|
var price = 0; //개별 건수 금액
|
|
var totalPrice = 0; //전체 금액
|
|
//var strDot = [];
|
|
//var subPrice = "";
|
|
//var spPrice = "";
|
|
var totalStr = "0"; //전체 합계 금액
|
|
var userMoney = $('#hdUserMoney').text(); //헤더 영역 보유 금액 불러오기
|
|
var msgCnt = 0; //발송 가능 문자 건수
|
|
var imgCnt = $("#imgCnt").val(); // 현재 페이지에 첨부된 이미지 갯수
|
|
|
|
if(!userMoney > 0){
|
|
|
|
userMoney = 0;
|
|
|
|
}
|
|
//헤더 영역 보유 금액 콤마 문자 제거
|
|
if(userMoney != ''){
|
|
|
|
userMoney = userMoney.replaceAll("," , "");
|
|
|
|
}
|
|
|
|
/*if(msgType == "P"){//그림문자
|
|
|
|
//그림 이미지 갯수에 따른 금액 계산
|
|
if(imgCnt > 2){//그림 3장일경우
|
|
price = parseFloat($('#p3Price').val());
|
|
}else if(imgCnt > 1){//그림 2장일경우
|
|
price = parseFloat($('#p2Price').val());
|
|
}else{//그림 1장일 경우
|
|
price = parseFloat($('#pPrice').val());
|
|
}
|
|
|
|
msgCnt = parseFloat(userMoney) / price;
|
|
|
|
}else if(msgType == "M"){//장문 문자
|
|
|
|
price = parseFloat($('#mPrice').val());
|
|
msgCnt = parseFloat(userMoney) / price;
|
|
|
|
}else{//단문문자
|
|
|
|
price = parseFloat($('#sPrice').val());
|
|
msgCnt = parseFloat(userMoney) / price;
|
|
|
|
}*/
|
|
|
|
//금액 소수점 제거 하여 적용 20220623 소수점 버림 처리
|
|
if(msgType == "P"){//그림문자
|
|
|
|
//그림 이미지 갯수에 따른 금액 계산
|
|
if(imgCnt > 2){//그림 3장일경우
|
|
price = $('#p3Price').val();
|
|
}else if(imgCnt > 1){//그림 2장일경우
|
|
price = $('#p2Price').val();
|
|
}else{//그림 1장일 경우
|
|
price = $('#pPrice').val();
|
|
}
|
|
|
|
msgCnt = userMoney / price;
|
|
|
|
}else if(msgType == "M"){//장문 문자
|
|
|
|
price = $('#mPrice').val();
|
|
msgCnt = userMoney / price;
|
|
|
|
}else{//단문문자
|
|
|
|
price = $('#sPrice').val();
|
|
msgCnt = userMoney / price;
|
|
|
|
}
|
|
|
|
totalPrice = price * collNumCnt;
|
|
|
|
// 소수점 첫째자리 까지 표시
|
|
totalPrice = totalPrice.toFixed(1);
|
|
|
|
if(totalPrice > 0){
|
|
|
|
//totalStr = totalPrice.toFixed(2);
|
|
totalStr = totalPrice;
|
|
|
|
}
|
|
|
|
//개별 문자 단가 파라미터에 입력
|
|
$('#eachPrice').val(numberWithCommas(price));
|
|
|
|
|
|
//결제금액 합계 파라이터에 입력
|
|
$('#totPrice').val(numberWithCommas(totalStr));
|
|
|
|
//결제금액 합계 화면에 표시
|
|
$('#totalPriceTxt').text(numberWithCommas(totalStr));
|
|
|
|
//현재 문자 전송 가능 갯수 표시
|
|
$('.nowMsgCnt').text(numberWithCommas(msgCnt.toFixed()));
|
|
|
|
if(msgType == 'P'){
|
|
|
|
$('#nowMsgType').text("그림");
|
|
|
|
}else if(msgType == 'M'){
|
|
|
|
$('#nowMsgType').text("장문");
|
|
|
|
}else{
|
|
|
|
$('#nowMsgType').text("단문");
|
|
|
|
}
|
|
|
|
$('#repPriceTxt').hide();
|
|
|
|
return totalStr;
|
|
|
|
}
|
|
|
|
function replTotalPriceSum(msg_short, msg_long, totRows){
|
|
|
|
var shortPrice = 0; //단문 개별 건수 금액
|
|
var longPrice = 0; //장문 개별 건수 금액
|
|
var imgPrice = 0; //그림문자 개별 건수 금액
|
|
var totalPrice = 0; //전체 금액
|
|
var totalStr = "0"; //전체 합계 금액
|
|
var contents = $('#smsTxtArea').val(); //입력 문자 내용
|
|
var msgType = conTypeCheck(contents); //입력 문자 길이 체크
|
|
var userMoney = $('#hdUserMoney').text(); //헤더 영역 보유 금액 불러오기
|
|
var msgCnt = 0; //발송 가능 문자 건수
|
|
var imgCnt = $("#imgCnt").val(); // 현재 페이지에 첨부된 이미지 갯수
|
|
var collNumCnt = parseInt(totRows); //받는사람 건수
|
|
var totalCntTxt = "";
|
|
|
|
//금액 소수점 제거하여 금액 처리
|
|
if(msgType == "P"){//그림문자
|
|
|
|
//그림 이미지 갯수에 따른 금액 계산
|
|
if(imgCnt > 2){//그림 3장일경우
|
|
imgPrice = $('#p3Price').val();
|
|
}else if(imgCnt > 1){//그림 2장일경우
|
|
imgPrice = $('#p2Price').val();
|
|
|
|
}else{//그림 1장일 경우
|
|
imgPrice = $('#pPrice').val();
|
|
}
|
|
|
|
msgCnt = userMoney.replaceAll(",","") / imgPrice;
|
|
|
|
var imgTotPrice = imgPrice * collNumCnt;
|
|
imgTotPrice = Math.round(imgTotPrice * 100) / 100; //소수점 2자리 반올리 처리해주기
|
|
|
|
totalPrice = totalPrice + imgTotPrice;
|
|
|
|
//input hidden 개별 문자 단가 파라미터에 입력
|
|
$('#eachPrice').val(numberWithCommas(imgPrice));
|
|
|
|
//input hidden 결제금액 합계 파라이터에 입력
|
|
$('#totPrice').val(numberWithCommas(totalStr));
|
|
|
|
//결제금액 합계 화면에 표시
|
|
$('#totalPriceTxt').text(numberWithCommas(totalStr));
|
|
|
|
//현재 문자 전송 가능 갯수 표시
|
|
$('.nowMsgCnt').text(numberWithCommas(msgCnt.toFixed()));
|
|
|
|
//변환문자 건수 내용 표기
|
|
totalCntTxt = "그림 : <strong>" + totRows + "</strong> 건";;
|
|
|
|
}else{
|
|
|
|
if(msg_long > 0){//장문 문자
|
|
|
|
longPrice = $('#mPrice').val();
|
|
var longTotPrice = longPrice * msg_long;
|
|
longTotPrice = Math.round(longTotPrice * 100) / 100; //소수점 2자리 반올리 처리해주기
|
|
|
|
totalPrice = totalPrice + longTotPrice;
|
|
|
|
//input hidden 개별 문자 단가 파라미터에 입력
|
|
$('#eachPrice').val(numberWithCommas(longPrice));
|
|
|
|
//변환문자 건수 내용 표기
|
|
totalCntTxt = "장문 : <strong>" + msg_long + "</strong> 건";
|
|
|
|
//변환장문 건수 Hidden 폼에 넣어주기
|
|
$('#longMsgCnt').val(msg_long);
|
|
|
|
}else{
|
|
|
|
//변환장문 건수 Hidden 폼에 넣어주기
|
|
$('#longMsgCnt').val(msg_long);
|
|
|
|
}
|
|
|
|
if(msg_short > 0){//단문문자
|
|
|
|
shortPrice = $('#sPrice').val();
|
|
var shortTotPrice = shortPrice * msg_short;
|
|
shortTotPrice = Math.round(shortTotPrice * 100) / 100; //소수점 2자리 반올리 처리해주기
|
|
|
|
totalPrice = totalPrice + shortTotPrice;
|
|
|
|
//input hidden 개별 문자 단가 파라미터에 입력
|
|
$('#eachPrice').val(numberWithCommas(shortPrice));
|
|
|
|
if(msg_long > 0){
|
|
|
|
//변환문자 건수 내용 표기
|
|
totalCntTxt = totalCntTxt + "/ 단문 : <strong>" + msg_short + "</strong> 건";
|
|
|
|
}else{
|
|
|
|
//변환문자 건수 내용 표기
|
|
totalCntTxt = "단문 : <strong>" + msg_short + "</strong> 건";
|
|
|
|
}
|
|
|
|
//변환단문 건수 Hidden 폼에 넣어주기
|
|
$('#shortMsgCnt').val(msg_short);
|
|
|
|
}else{
|
|
|
|
//변환단문 건수 Hidden 폼에 넣어주기
|
|
$('#shortMsgCnt').val(msg_short);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
if(totalPrice > 0){
|
|
|
|
//totalStr = totalPrice.toFixed(2);
|
|
totalStr = totalPrice;
|
|
|
|
}
|
|
|
|
//input hidden 결제금액 합계 파라이터에 입력
|
|
$('#totPrice').val(numberWithCommas(totalStr));
|
|
|
|
//결제금액 합계 화면에 표시
|
|
$('#totalPriceTxt').text(numberWithCommas(totalStr));
|
|
|
|
//결제금액 합계 파라이터에 입력
|
|
$('#totPrice').val(numberWithCommas(totalStr));
|
|
|
|
//특정문구 일괄 변환으로 인한 단/장문 건수 표시
|
|
$('#repPriceTxt').show();
|
|
$('#repPriceTxt').html("(" + totalCntTxt + ")");
|
|
|
|
if(msgType == 'P'){
|
|
|
|
$('#nowMsgType').text("그림");
|
|
|
|
}else if(msgType == 'M'){
|
|
|
|
$('#nowMsgType').text("장문");
|
|
|
|
}else{
|
|
|
|
$('#nowMsgType').text("단문");
|
|
|
|
}
|
|
|
|
return totalStr;
|
|
|
|
}
|
|
|
|
//예약 날짜 체크 함수
|
|
function getGday(date) { /* 현재와 이전 날자의 차이를 년-개월-일 형태로 가져오기 */
|
|
var now = new Date().getTime(); // 현재 날짜를 시간으로 변환
|
|
var d = new Date(date.substring(0, 10)).getTime(); // 이전 날짜를 시간으로 변환
|
|
var gap = now - d; // 현재 날짜와 이전 날짜의 차이를 밀리초 시간으로 구한다.
|
|
var result = Math.floor(gap/(1000 * 60 * 60 * 24)); // 날짜 차이를 일수로 계산
|
|
|
|
var year = Math.floor(result / 365); // 현재 날짜 년 - 개월 - 일 수로 표현하기
|
|
var month = Math.floor(result % 365 / 30);
|
|
var day = result % 365 % 30;
|
|
|
|
return result;
|
|
|
|
//각 년도, 월, 일을 따로 리턴하려면 아래를 사용하면 됨
|
|
/* return {
|
|
year: year,
|
|
month: month,
|
|
day: day
|
|
}; */
|
|
}
|
|
|
|
/*
|
|
* 예약 날짜 오류 체크 함수
|
|
* 날짜, 시간, 분 파라미터 전달
|
|
* 현재 날짜와 파라미터 시간의 분 간격 계산해주기
|
|
* */
|
|
function getGapDayTime(paramDate,paramHours,paramMin) { /* 현재와 이전 날자의 차이를 년-개월-일 형태로 가져오기 */
|
|
|
|
var now = new Date();
|
|
|
|
//현재시간 구분하기
|
|
var year = now.getFullYear();
|
|
var month = now.getMonth() + 1 ;
|
|
var day = now.getDate();
|
|
var hours = now.getHours();
|
|
var min = now.getMinutes();
|
|
|
|
//비교시간
|
|
var stDt = paramDate.split("/");
|
|
var stYear = stDt[0];
|
|
var stMonth = stDt[1];
|
|
var stDay = stDt[2];
|
|
|
|
var nowDate = new Date(year, month-1, day, hours, min);
|
|
var stDate = new Date(stYear, stMonth-1, stDay, paramHours, paramMin);
|
|
var elapsedMSec = stDate.getTime() - nowDate.getTime();
|
|
var elapseMin = elapsedMSec / 1000 / 60;
|
|
|
|
elapseMin = parseInt(elapseMin);
|
|
|
|
return elapseMin;
|
|
|
|
//각 년도, 월, 일을 따로 리턴하려면 아래를 사용하면 됨
|
|
/* return {
|
|
year: year,
|
|
month: month,
|
|
day: day
|
|
}; */
|
|
}
|
|
|
|
// 중복 주소 체크하기
|
|
/*function dupliAddrData(data){
|
|
|
|
var chk = true; //중복값 유무
|
|
var uniqData = []; // 중복값 삭제 후 데이터 저장
|
|
var dupCnt = 0;
|
|
|
|
//첨부 주소 정보에서 연락처가 중복되는 경우 하나만 남기고 나머지는 삭제 하고 보여줌
|
|
$.each(data, function(i, item){
|
|
|
|
chk = true; //중복값 유무
|
|
|
|
$.each(uniqData, function(j, item2){
|
|
|
|
if(item.phone == item2.phone){
|
|
|
|
chk = false;
|
|
dupCnt = dupCnt + 1;
|
|
console.log("++++++++++++++ dupCnt ::: "+ dupCnt);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if(chk){
|
|
|
|
uniqData.push(item);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
$("#rowDupCnt").text(dupCnt);
|
|
return uniqData;
|
|
|
|
}*/
|
|
|
|
var dupliPhoneDataRealList = [];
|
|
|
|
//중복 전화번호 체크하기
|
|
function dupliPhoneData(data){
|
|
var chk = true; //중복값 유무
|
|
var uniqData = []; // 중복값 삭제 후 데이터 저장
|
|
var dupCnt = 0;
|
|
|
|
//첨부 주소 정보에서 연락처가 중복되는 경우 하나만 남기고 나머지는 삭제 하고 보여줌
|
|
$.each(data, function(i, item){
|
|
|
|
chk = true; //중복값 유무
|
|
|
|
$.each(uniqData, function(j, item2){
|
|
if(item.phone.length > 0){
|
|
if(item.phone == item2.phone){
|
|
|
|
chk = false;
|
|
dupCnt = dupCnt + 1;
|
|
|
|
}
|
|
}
|
|
|
|
});
|
|
|
|
if(chk){
|
|
uniqData.push(item);
|
|
}
|
|
else {
|
|
// Get 중복 연락처
|
|
GetDupliPhoneDataReal(item.phone);
|
|
}
|
|
|
|
});
|
|
|
|
//중복건수 텍스트 입력해 주기
|
|
$("#rowDupCnt").text(dupCnt);
|
|
|
|
// 중복번호 버튼 노출
|
|
if($("#btnAddrMassDupli").length > 0) {
|
|
$("#btnAddrMassDupli").show();
|
|
}
|
|
|
|
// 중복번호(기존 주소록) 버튼 노출
|
|
if($("#btnAddrMassSaveDupli").length > 0) {
|
|
$("#btnAddrMassSaveDupli").hide();
|
|
}
|
|
|
|
return uniqData;
|
|
}
|
|
|
|
// Get 중복 연락처
|
|
function GetDupliPhoneDataReal(item) {
|
|
var isDuplicate = false;
|
|
if (dupliPhoneDataRealList.length == 0) {
|
|
dupliPhoneDataRealList.push(item);
|
|
}
|
|
else {
|
|
for (var i = 0; i < dupliPhoneDataRealList.length; i++) {
|
|
if (dupliPhoneDataRealList[i] == item) {
|
|
isDuplicate = true;
|
|
}
|
|
}
|
|
|
|
if (isDuplicate) {
|
|
return;
|
|
}
|
|
else {
|
|
dupliPhoneDataRealList.push(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
//중복 전화번호 체크하여 중복 갯수 리턴하기
|
|
function dupliPhoneDataChk(data){
|
|
|
|
var chk = true; //중복값 유무
|
|
var uniqData = []; // 중복값 삭제 후 데이터 저장
|
|
var dupCnt = 0;
|
|
|
|
//첨부 주소 정보에서 연락처가 중복되는 경우 하나만 남기고 나머지는 삭제 하고 보여줌
|
|
$.each(data, function(i, item){
|
|
|
|
chk = true; //중복값 유무
|
|
|
|
$.each(uniqData, function(j, item2){
|
|
|
|
if(item.phone.length > 0){
|
|
|
|
if(item.phone == item2.phone){
|
|
|
|
chk = false;
|
|
dupCnt = dupCnt + 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
if(chk){
|
|
|
|
uniqData.push(item);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return dupCnt;
|
|
|
|
}
|
|
|
|
//특정 바이트수 만큼 문자열 잘라서 반환해주기
|
|
function strUnderLineSubstring(str, maxLength){
|
|
|
|
for(b=i=0;c=str.charCodeAt(i);) {
|
|
|
|
b+=c>>7?2:1;
|
|
|
|
if (b > maxLength)
|
|
|
|
break;
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
return str.substring(0,i);
|
|
|
|
}
|
|
|
|
|
|
//특정 글자수 만큼 문자열 잘라서 반환해주기
|
|
function strMaxLengthSubstring(str, maxLength){
|
|
|
|
for(b=i=0;c=str.charCodeAt(i);) {
|
|
|
|
if (i > maxLength)
|
|
|
|
break;
|
|
|
|
i++;
|
|
|
|
}
|
|
|
|
return str.substring(0,i);
|
|
|
|
}
|
|
|
|
//문자열 글자수 반환해주기(한글, 영문, 특수문자, 엔터와 상관없이 글자수로 체크함)
|
|
function strMaxCharacterCnt(str){
|
|
|
|
var totLen = 0;
|
|
for(b=i=0;c=str.charCodeAt(i);) {
|
|
i++;
|
|
totLen = i;
|
|
}
|
|
return totLen;
|
|
}
|
|
|
|
//문자입력 첫번째 글자가 한글, 숫자, 영문자가 아니면 경고 표시
|
|
function strFirstCharCheck(str){
|
|
|
|
var pattern1 = /[0-9]/;
|
|
var pattern2 = /[a-zA-Z]/;
|
|
var pattern3 = /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/;
|
|
|
|
var spChar = 0;
|
|
for(var i=0; i<str.length; i++){
|
|
|
|
if (!pattern1.test(str.charAt(i)) && !pattern2.test(str.charAt(i)) && !pattern3.test(str.charAt(i))) {
|
|
spChar++;
|
|
}else{
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
var repStr = str.substring(0,spChar);
|
|
return repStr;
|
|
|
|
}
|
|
|
|
function strChinJpnCheck(str){
|
|
|
|
var rtnStr = "";
|
|
for(var i=0; i < str.length; i++){
|
|
|
|
var cont = str.charAt(i);
|
|
|
|
if(str.charAt(i) >= '\u4E00' && str.charAt(i) <= '\u9FFF'){//한중일 공통한자일 경우
|
|
|
|
if(rtnStr.length == 0){
|
|
rtnStr = cont;
|
|
}else{
|
|
rtnStr = rtnStr + ", " + cont;
|
|
}
|
|
|
|
}else if(str.charAt(i) >= '\u2E80' && str.charAt(i) <= '\u2EFF'){//한자부수
|
|
|
|
if(rtnStr.length == 0){
|
|
rtnStr = cont;
|
|
}else{
|
|
rtnStr = rtnStr + ", " + cont;
|
|
}
|
|
|
|
}else if(str.charAt(i) >= '\u3400' && str.charAt(i) <= '\u4DB5'){//한자확장A
|
|
|
|
if(rtnStr.length == 0){
|
|
rtnStr = cont;
|
|
}else{
|
|
rtnStr = rtnStr + ", " + cont;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return rtnStr;
|
|
}
|
|
|
|
//받아온 str 에 이모지가 포함되어있는지 체크하여 갯수로 반환
|
|
function emojiCheck (str) {
|
|
var regex = /[\u{1F004}-\u{1F9E6}]|[\u{1F600}-\u{1F9D0}]/gu;
|
|
var usedEmoji = "";
|
|
var returnFlag = true;
|
|
|
|
var splitMsg = str.split(/.*?/u);
|
|
|
|
for(var i=0; i < splitMsg.length; i++){
|
|
if(splitMsg[i].match(regex)) {
|
|
usedEmoji = usedEmoji + splitMsg[i];
|
|
returnFlag = false;
|
|
}
|
|
}
|
|
if(!returnFlag) alert("문자 제목, 내용에 이모지는 사용할 수 없습니다.\n이모지 삭제후 발송해주세요.\n(" + usedEmoji + ")");
|
|
|
|
return returnFlag;
|
|
}
|
|
|
|
function addrEmojiCheck (str) {
|
|
var regex = /[\u{1F004}-\u{1F9E6}]|[\u{1F600}-\u{1F9D0}]/gu;
|
|
var usedEmoji = "";
|
|
var returnFlag = true;
|
|
|
|
var splitMsg = str.split(/.*?/u);
|
|
|
|
for(var i=0; i < splitMsg.length; i++){
|
|
if(splitMsg[i].match(regex)) {
|
|
usedEmoji = usedEmoji + splitMsg[i];
|
|
returnFlag = false;
|
|
}
|
|
}
|
|
|
|
if(!returnFlag) {
|
|
//로딩창 hide
|
|
$('.loading_layer').removeClass('active');
|
|
|
|
alert("주소록 저장 목록 중 이모지를 사용할 수 없습니다.\n이모지 삭제후 발송해주세요.\n(" + usedEmoji + ")");
|
|
}
|
|
|
|
return returnFlag;
|
|
}
|
|
|
|
// 제목이 치환 문구 체크
|
|
function getSpacialStringChk(mmsSubject){
|
|
|
|
var returnStr = false;
|
|
|
|
if(mmsSubject.indexOf("[*이름*]") > -1 || mmsSubject.indexOf("[*1*]") > -1 || mmsSubject.indexOf("[*2*]") > -1 || mmsSubject.indexOf("[*3*]") > -1 || mmsSubject.indexOf("[*4*]") > -1){
|
|
returnStr = true;
|
|
}
|
|
|
|
return returnStr;
|
|
|
|
}
|
|
|
|
//커서 위치에 삽입
|
|
function setCursorInsertText(pTxtArea, pAddTxt) {
|
|
var txtArea = document.getElementById(pTxtArea);
|
|
var txtValue = txtArea.value;
|
|
var selectPos = txtArea.selectionStart; // 커서 위치 지정
|
|
var beforeTxt = txtValue.substring(0, selectPos); // 기존텍스트 ~ 커서시작점 까지의 문자
|
|
var afterTxt = txtValue.substring(txtArea.selectionEnd, txtValue.length); // 커서끝지점 ~ 기존텍스트 까지의 문자
|
|
var addTxt = pAddTxt; // 추가 입력 할 텍스트
|
|
txtArea.value = beforeTxt + addTxt + afterTxt;
|
|
|
|
selectPos = selectPos + addTxt.length;
|
|
txtArea.selectionStart = selectPos; // 커서 시작점을 추가 삽입된 텍스트 이후로 지정
|
|
txtArea.selectionEnd = selectPos; // 커서 끝지점을 추가 삽입된 텍스트 이후로 지정
|
|
txtArea.focus();
|
|
}
|