프로그래밍/Javascript

입력 제한, 숫자,object controller js

즐겁게 하하하 2022. 1. 14. 02:47
728x90

■ input box 컨트롤

// 버튼클릭하면 인풋박스 만들기.
$(document).on("dblclick","#double_click",function(){ 
  $(this).html('<input type="text" id="upd_text" value="">');
});

// 버튼클릭 할때 자동으로 여러번 스크립트 실행 되는것 막기
$("#custSelectBtn").off().on('click', function() { 
    setCustSelected();
});

//누르고나면 버튼 사라짐
<input type=”submit” onClick=”this.style.visibility=’hidden'” value=”누르고나면 버튼사라져" />

//누르고 나면 비활성화(POST로 데이터 못가져옴. form최종 전송하기전에 disabled 헤제해야 데이터 가져옴)
<input type=submit onclick=”this.disabled=true” value=”누르고나면 비활성화”>

//input 상자 전부 비활성화  (POST로 데이터 못가져옴. form최종 전송하기전에 disabled 헤제해야 데이터 가져옴)
$('input').attr('disabled', 'disabled'); 

//input 상자 id값으로 비활성화.
$('#warehouse_nm').attr('disabled', 'disabled');

//input 전부 활성화
$('input').removeAttr("disabled"); 

//name값으로 속성 컨트롤 (POST로 데이터 못가져옴. form최종 전송하기전에 disabled 헤제해야 데이터 가져옴)
 $("input[name=sel]").attr("disabled",true);

//input 상자   readonly로 변경하기.
document.getElementById("myText").readOnly = true;
$('input[type="text"], textarea').removeAttr('readonly');
 
$('#descrip').removeAttr('readonly');
$("input[name='하고자하는 속성의 name']").attr("readonly", true);
 

■ Radio 버튼 컨트롤

선택된 값 전송
$("input[name='iCategoryBtn']:checked").val();

읽어온 값 체크되게 하기
$('input:radio[name=WORK_DIV][value=' + workDiv + ']').prop("checked", true);

라디오 체크헤제
$("input:radio[name='pc_check']").prop("checked", false);

라디오 선택값 가져오기
<input type='radio' name='pd_state_exhibition' value='1' <?=check("1", $row->pd_state_exhibition)?> />진열함
<input type='radio' name='pd_state_exhibition' value='2' <?=check("2", $row->pd_state_exhibition)?> />진열안함

라디오 db값가져와서 라디오버튼에 넣어주기
<input type="radio" name="gender" value="여자" <? if($t->gender=="여자") echo checked; ?> />여자

예 )
<input type="fruit" value="apple" />사과
<input type="fruit" value="banana" />바나
<input type="fruit" value="pineapple" />파
 
1. radio 버튼 선택
$("input[name='etrtBzenOfrYn'][value='N']").prop("checked", true);

2. radio 버튼 선택된 값 가져오기
var fruitValue = $("input[name='eventQuestions["+ i + "].ty']:checked").val(); 


//라디오 클릭시 이벤트 
$("input:radio[name='commission_chk']").click(function(){
    if($("input:radio[name='commission_chk']:checked").val() == "법정수수료"){
       $("#commission").val("");
       $("#commission").attr("readonly",true);
   }else{
      $("#commission").attr("readonly",false);
   }
 });
 
var listVar = $('input[name=list]').is(":checked");
$('input:radio[name=이름]').is(":checked");
$('input:checkbox[name=이름]').is(":checked");
$("input:radio[name='" + radioName + "']").eq(0).prop("checked", true);
 

■ Select Box 컨트롤

//  selectbox 값 고정하기
$("#ty option:selected").val("01"); 
$("#ty").attr("onChange", 'this.selectedIndex = this.initialSelect');

//선택박스 전체 선택|헤제
$("#checkedAll").click(function(){     //체크박스 전체선택 전체선택 해제
     if($("#checkedAll").prop('checked')) {
             $(".chk").each(function(){
                 $(this).not(":disabled").prop("checked", true); 
             });
     } else {
         $(".chk").each(function(){
             $(this).prop("checked",false);
         });
     }
 });

select 박스 참조 사이트
http://snowple.tistory.com/379

// 선택하기
$("#sAddress > option[value=" + json.sAddress + "]").prop("selected", "true");
$('select.fruit option[value=' + fruit_val + ']').attr('selected', 'selected');
$("#command_work_process").val($("#work_process").val());

//선택된 value 읽기$("#select_box option:selected").val();
$("select[name=selectbox]").val();

jQuery로 선택된 내용 읽기
$("#selectbox option:selected").text();

특정 값인 옵션 지우기
$("#select1 option[value!=1]).remove();

선택 value 빼고 option 모두 지우기
$("[name=네임값] option").not(":selected").remove();

선택된 위치
var index = $("#test option").index($("#test option:selected"));

//선택박스 index 하나 사용 못하게/사용가능하게 .. form전송전에 반드시 풀어주어야함...
document.getElementById("state").options[0].disabled = true;
document.getElementById("state").options[0].disabled = false;

// 셀렉트 박스 옵션에 추가(기존 옵션 뒤쪽으로 추가)
$("#myselect").append("<option value='1'>Apples</option>");
$("#myselect").append("<option value='2'>After Apples</option>");

// 옵션 시작 부분(맨 앞에) 추가
$("#myselect").prepend("<option value='0'>Before Apples</option>");

// 옵션값을 새롭게 정의
$("#myselect").html("<option value='1'>Some oranges</option><option value='2'>More Oranges</option><option value='3'>Even more oranges</option>");

// 옵션값의 인덱스 번호를 변경
$("#myselect option:eq(1)").replaceWith("<option value='2'>Some apples</option>");
$("#myselect option:eq(2)").replaceWith("<option value='3'>Some bananas</option>");

// 2번 인덱스의 값을 선택된 상태로 변경
$("#myselect option:eq(2)").attr("selected", "selected");
$("#qc_classify option:eq(0)").prop("selected",true);

// value의 텍스트 내용으로 선택된 상태로 변경
$("#myselect").val("Some oranges").attr("selected", "selected");

// value 값으로 selected 속성 주기
$("#셀렉트ID").val("1");

//선택박스 선택 못하게./선택가능하게
$('#search_dept_cd').attr('disabled', 'true');
$('#gubun').removeAttr("disabled");

// index번호가 0인것을 제거
$("#myselect option:eq(0)").remove();

// 첫번째 옵션 엘리먼트를 제거
$("#myselect option:first").remove();

// 마지막 옵션 엘리먼트를 제거
$("#myselect option:last").remove();

//선택값외에 모든 옵션 제거
$("[name='네임값'] option").not("[value='특정value']").remove();

// 선택된 텍스트 알림으로 보이기
alert($("#myselect option:selected").text());

// 선택된 값 알림으로 보이기
alert($("#myselect option:selected").val());

// 선택된 옵션의 인덱스 번호 보이기
alert($("#myselect option").index($("#myselect option:selected")));

// 특정 index 선택
$("#id option:eq(0)").prop("selected", true);

// Alternative way to get the selected item
alert($("#myselect option:selected").prevAll().size());

// 0번 인덱스 다음으로 옵션을 추가
$("#myselect option:eq(0)").after("<option value='4'>Some pears</option>");

// 3번 인덱스 이전에 옵션을 추가
$("#myselect option:eq(3)").before("<option value='5'>Some apricots</option>");

// select 박스의 값이 변경되었을 때 알링으로 값과 텍스트 보이기
$("#myselect").change(function() {
   alert($(this).val());
   alert($(this).children("option:selected").text());
});

//옵션추가
$("#selectList").append(new Option("option text", "value"));

// option 예외처리
https://nowonbun.tistory.com/569

 

 

■ CheckBox 컨트롤

1. checkbox checked 여부:
id인 경우:  $('input:checkbox[id="checkbox_id"]').is(":checked") == true
name인 경우: $('input:checkbox[name="checkbox_name"]').is(":checked") == true

2. checkbox 전체 갯수(이 경우는 name인 경우만 가능)
$('input:checkbox[name="checkbox_name"]').length;

3. checkbox 선택된 갯수(이 경우는 name인 경우만 가능)
$('input:checkbox[name="checkbox_name"]:checked').length;

4. checkbox 전체 순회하며 처리(동일한 name으로  여러 개인 경우)
$('input:checkbox[name="checkbox_name"]').each(function(){
      this.checked = true; //checked 처리
      if(this.checked){
         alert(this.value);
      }
});

5.checkbox 전체 값을 순회하며, 비교하여 checked 처리
<input type="checkbox" onclick="allcheck(this.checked)" style='width:20px; height:20px;'/>
function allcheck(bool){
     $('input:checkbox[name="checkbox_name"]').each(function(){
          if(this.value == "비교값"){     //값비고
             this.checked = true;     //체크처리
          }
     });
}

6.checkbox value값 가져오기(단일건)
$('input:checkbox[id="checkbox_id"]').val();

7. checkbox checked 처리하기(단일건)
$("input:checkbox[id='ID']").prop("checked", true);    
$("input:checkbox[id='make_barcode_"+i+"']").attr("checked", false);

8. checkbox checked 여부 확인(단일건)
$("#checkbox_id").is(":checked");

9. 화면에 존재하는 모든 체크박스 전체선택 및 전체해제
 $( document ).ready( function() {
    $( '.check-all' ).click( function() {
        $( '.chk' ).prop( 'checked', this.checked );     //화면 전체 체크박스 체크표시.
    });
});

10. name값으로 체크 박스 모두 체크
$("#checkAll").click(function() {
   $("input[name=box]:checkbox").each(function() {
       $(this).attr("checked", true);
   });
});

11. name 값으로 체크 박스 모두 해제
$("#uncheckAll").click(function() {
        $("input[name=box]:checkbox").each(function() {
             $(this).attr("checked", false);
        });
});

12. name 값으로 체크 되어 있는 값 추출
$("#getCheckedAll").click(function() {
        $("input[name=box]:checked").each(function() {
            var test = $(this).val();
            console.log(test);
        });
});

13. name 값으로 선택박스 disabled 아닌것만 체크하게 하기
$("input[name=delChkbox]").not(":disabled").attr("checked", "checked");

14. disable on,off
$("input#user_pr_v1").removeAttr("disabled");
$("input#user_pr_v1").attr("disabled", true);

15. 전체 선택, 해제
//리스트 전체선택 체크박스 클릭
$("#allCheck").click(function(){
    //만약 전체 선택 체크박스가 체크된상태일경우
    if($("#allCheck").prop("checked")) {
        $("input[type=checkbox]").prop("checked",true); //체크 실행
    } else {
        $("input[type=checkbox]").prop("checked",false);
    }
});

// 체크박스 선택된값을 back단에 넘기기 전 hidden input 값 처리
function custSelectedHidden(){
	 
	var codeIdArr = [];
	var codeNmArr = [];
	$(".select_cust").each(function(index, item) {
	    if( $(this).val() != undefined ){ codeIdArr.push($(this).val()); }
	    
	   var cust_nm = $("#select_nm_"+ $(this).val() ).val();  
	   if( cust_nm != undefined ){ codeNmArr.push( cust_nm ); }
	});
	$("#select_cust_id_list").val(codeIdArr);
	$("#select_cust_nm_list").val(codeNmArr);
}


//체크된것  갯수
var tmpChkCnt = $(".tmpChkbox:checked").length;


// 기본 형식
$(Selector[attr]) 
value 동일한 개체 선택 $(Selector[attr="value"])
value와 불일치 하는 개체 선택 $(Selector[attr!="value"])
value로 시작하는 개체 선택 $(Selector[attr^="value"])
value 로 끝나는 값 선택 $(Selector[attr$="value"])
value가 포함하는 값 선택 $(Selector[attr*="value"])
value가 포함하는 값 선택 $(Selector[attr~="value"])

예)
<- 태그가 input태그이고 id값이 chk_mileage으로 시작하는 개체 선택!
$("input[id^='chk_mileage']") 
$(this).find("[name$='.objtvAnswDs']").attr("name", "eventQuestions[" + i + "].objtvAnswDs");
$(this).find("[id^='objtvAnswDs1_']").attr("id", "objtvAnswDs1_" + i);
 

■ 숫자인지 확인

if(safe_qty.val().isNumeric() == false){
	alert('올바르게 입력해주세요.(숫자,소수점 두자리');
	safe_qty.focus();
	return;
}

자바스크립트에서 isNaN 은 숫자가 아닌 값을 찾는 함수입니다.
출처: https://sometimes-n.tistory.com/34
 

■ input 실시간 변경확인

//INPUT 바인딩 체크
	$("#sch_txt").on("propertychange change keyup paste input", function(e) {
		var currentVal = $(this).val();
		if(currentVal == oldVal) {
			return;
		}
		oldVal = currentVal;
		if(currentVal != ""){
			barcodeSearch();
		}
	});
 

■ 입력제한 방법

//javaScript 입력 제한 방법
// 숫자만 허용하기 방법1
$(document).on("keyup", ".comma",
	function() {
		$(this).number(true);
	}
);

// 숫자만 허용하기 방법2
$(".onlynum").keyup(function(){$(this).val( $(this).val().replace(/[^0-9.]/g,"") );} );

// 숫자만 허용하기 방법3
<script type="text/javascript"> $('#inputBox').keypress(function (event) { if (event.which && (event.which <= 47 || event.which >= 58) && event.which != 8) { event.preventDefault(); } }); </script>
====================================================================================================
//PHP 입력제한 방법
// 숫자만 남기기
preg_replace("/[^\d]/i", "", $string);

//숫자만 제거
preg_replace("/[\d]/i", "", $string);

// 특수 문자만 제거
preg_replace("/[ #\&\+\-%@=\/\\\:;,\.'\"\^`~\_|\!\?\*$#<>()\[\]\{\}]/i", "", $string);

//알파벳 빼고 모두 제거
preg_replace("/[^a-z]/i", "", $string);

//한글만 남기고 모두 제거
preg_replace("/[ #\&\+\-%@=\/\\\:;,\.'\"\^`~\_|\!\?\*$#<>()\[\]\{\}0-9a-z]/i", "", $string);

// 비밀번호 정책
<input type="password" name="passwd" pattern="^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[!@#$%^&*()_-+=[]{}~?:;`|/]).{6,50}$">
 

■ input 입력후 Enter누르면 함수 실행

<input type=text onkeypress="javascript:if(event.keyCode == 13){document.write('이 구역이 Key 입력 13[enter] 후 실행되는 구간입니다.');}" value="">
 

■ SQL 특수 문자 입력 막기

$(document).on("keyup",".base",
	function(){
		var value = $(this).val();
		var revalue = value.replace(/[?~!%^,;:|\`!\@\#\\\\\'\"]/gi,""); //특수문제 자거
		//var revalue2 = revalue.replace( /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/g,""); //한글제거
		//var revalue3 = revalue.replace(/(\s*)/g, "");
		$(this).val(revalue);
	}
);
 

■ 소수점 앞에 콤마 넣고 . 하나 이상 입력 막기

//소수점 control
function changeFloat( val ){

	var val = String(val);
	if( val == "" ){
		return "";
	}else if(val.indexOf(".") != -1 ){
		var arr = val.split(".");
		if( arr[1] != "" &&  Number(arr[1]) > 0 ){
			val = arr[0] + "." + arr[1];
		}else if( arr[1] != "" &&  Number(arr[1]) == 0 ) {
			val = arr[0];
		}else{
			val = arr[0] + ".";
		}
		return val;
	}else{
		return (val);
	}
}

//소수점 control
function viewFloat( val ){

	var val = String(val);
	if( val == "" ){
		return "";
	}else if(val.indexOf(".") != -1 ){
		var arr = val.split(".");
		if( arr[1] != "" &&  Number(arr[1]) > 0 ){
			arr[1] = (arr[1]).replace(/(0+$)/, "");
			val = comma(arr[0]) + " ." + arr[1];
		}else if( arr[1] != "" &&  Number(arr[1]) == 0 ) {
			val = comma(arr[0]);
		}else{
			val = comma(arr[0]) + " .";
		}
		return val;
	}else{
		return comma(val);
	}
}

/**
 * 입력 수량 소수점 두째 자리까지 자르기
 * @param obj
 * @param qty
 */
function qty_key_event2( obj, value ){
	// 소수점 자리수 두자리로 제한하기
	if(value.indexOf(".") != -1 ) {
		var arr = value.split(".");
		value = arr[0] + "." + (arr[1]).substr(0, 2);
		obj.value = value;
	}
}
/**
 * 크기 비교
 * */
function compareQty( remain_qty , id , input ){

	var remain_qty = parseFloat(remain_qty);
	var input = parseFloat(input);
	if( remain_qty < input ){
		alert('수량을 초과하였습니다.');
		$("#"+id).val(remain_qty);
	}
}
 

■ 콤마 넣기, 콤마풀기

//콤마찍기
function comma(str) {
	str = String(str);
	return str.replace(/(\d)(?=(?:\d{3})+(?!\d))/g, '$1,');
}

//콤마풀기
function uncomma(str) {
	str = String(str);
	return str.replace(/,/g, '');
}
 

■ 중복확인

var arr = [];  
$(".l_no").each(function() {
    if( $(this).val() != undefined ){
        arr.push($(this).val());
    }
});  

var check = "1111";
var idx = jQuery.inArray(check, arr);

if (idx >= 0) {
    showAlert("이미 처리된 것");
    return false; 
} else { }
 

■ 사업자 번호 입력 check

//사업자 번호 입력 check
function bizNoFormatter(num, type) {     
	var formatNum = '';     
	try{          
		if (num.length == 10) {               
			if (type == 0) {                    
				formatNum = num.replace(/(\d{3})(\d{2})(\d{5})/, '$1-$2-*****');               
			} else {                     
				formatNum = num.replace(/(\d{3})(\d{2})(\d{5})/, '$1-$2-$3');              
			}          
		}     
	} catch(e) {          
		formatNum = num;         
		console.log(e);     
	}     
	
	return formatNum;
}

■ 연락처 입력 check

value = value.replace(/[^0-9]/g, "");
$(this).val( value.replace(/(^02.{0}|^01.{1}|[0-9]{3})([0-9]+)([0-9]{4})/,"$1-$2-$3") );

 

  textarea 제한

// 입력창: 글자 및 Enter 제한을 위한 처리
$("#voiceCn").keyup(function(e) {
  // 1. 최대 1000자 제한
  var content = $(this).val();
  if (content.length > 1000) {
    alert("최대 1000자까지 입력할 수 있습니다.");
    $(this).val(content.substring(0, 1000));
    $("#textLengthCheck").text("1000");
  } else {
    $("#textLengthCheck").text(content.length);
  }

  // 2. enter 시 한 줄당 96자 제한 (96자가 넘어가면 자동으로 줄바꿈 처리)
  var maxLengthPerLine = 96;
  var newLines = (this.value.match(/\n/g) || []).length;
  var lines = this.value.split("\n");

  for (var i = 0; i < lines.length; i++) {
    var newLine = "";
    while (lines[i].length > maxLengthPerLine) {
      newLine += lines[i].substring(0, maxLengthPerLine) + "\n";
      lines[i] = lines[i].substring(maxLengthPerLine);
    }
    newLine += lines[i]; // 남은 문자열 추가
    lines[i] = newLine;
  }
  this.value = lines.join("\n");

  // 3. enter 횟수 제한
  var maxNewLines = 10;
  var newLines = (this.value.match(/\n/g) || []).length;
  if (newLines > maxNewLines) {
    alert("Enter는 최대 10개까지만 입력할 수 있습니다.");
    var lines = this.value.split("\n");
    this.value = lines.slice(0, maxNewLines + 1).join("\n");
  }
});

 

728x90