본문 바로가기
IT/자바스크립트

jQuery `.val()` 메서드와 정수(integer) 처리 완벽 가이드

by 불멸남생 2025. 3. 25.

jQuery는 프론트엔드 웹 개발에서 여전히 널리 사용되는 JavaScript 라이브러리로, 그 중에서도 .val() 메서드는 폼 요소의 값을 가져오거나 설정할 때 매우 중요한 역할을 한다. 본 문서에서는 .val() 메서드의 기본 사용법부터, 이를 정수(integer)로 처리하는 고급 활용 방법까지 포괄적으로 다룬다. 이 글은 jQuery와 정수 값을 조작하는 개발자에게 최고의 참조 자료가 될 수 있도록 설계되었다.

jQuery .val() 메서드란?

.val()은 jQuery의 메서드로, 주로 <input>, <select>, <textarea>와 같은 폼 요소의 값을 읽거나 쓸 때 사용된다.

// 값 가져오기
let value = $('#input-id').val();

// 값 설정하기
$('#input-id').val('새로운 값');

이 메서드는 체이닝이 가능하며, 사용이 직관적이기 때문에 많은 jQuery 개발자에게 필수 기능으로 자리 잡았다.

반응형

.val()로 입력값 가져올 때 문자열로 반환되는 이유

jQuery의 .val() 메서드는 기본적으로 항상 문자열(String) 을 반환한다. 이는 사용자가 숫자를 입력했더라도 마찬가지다.

예:

<input type="number" id="age" value="25" />
let age = $('#age').val();
console.log(typeof age); // 'string'

왜 항상 문자열인가?

HTML의 <input> 요소는 입력값을 항상 문자열로 처리한다. 숫자처럼 보이는 값도 내부적으로는 문자열로 저장되므로, .val()도 당연히 문자열을 반환한다.

반응형

.val()로 받은 문자열을 정수(integer)로 변환하는 방법

.val() 메서드는 문자열을 반환하므로, 숫자 계산이나 조건 비교를 위해서는 정수(integer)로 변환해야 한다. 가장 널리 쓰이는 방법은 parseInt()와 Number()를 사용하는 것이다.

parseInt() 사용 예시

let age = parseInt($('#age').val(), 10); // 두 번째 인자는 10진법 지정

Number() 사용 예시

let age = Number($('#age').val());

두 방법 모두 유효하지만, parseInt()는 문자열에 숫자 외 다른 문자가 포함된 경우에도 앞부분만 숫자로 해석하는 반면, Number()는 전체가 숫자로 해석 가능해야 동작한다.

예시 비교

parseInt("45abc", 10);  // 45
Number("45abc");        // NaN
반응형

실무에서 자주 사용하는 정수 처리 예제

숫자 입력값의 유효성 검사

let age = parseInt($('#age').val(), 10);
if (!isNaN(age) && age > 0) {
  console.log("유효한 나이:", age);
} else {
  alert("올바른 숫자를 입력하세요.");
}

계산식에 활용

let price = parseInt($('#price').val(), 10);
let quantity = parseInt($('#quantity').val(), 10);
let total = price * quantity;
$('#total').text(total.toLocaleString() + '원');
반응형

.val()과 정수 처리에서 주의해야 할 오류 및 해결법

1. 빈 문자열 오류

let value = $('#input').val();  // ""
let number = parseInt(value, 10); // NaN

해결법:

let value = $('#input').val();
let number = value === "" ? 0 : parseInt(value, 10);

2. NaN 처리 누락

NaN은 "Not a Number"의 약자로, 숫자 변환에 실패했을 때 반환된다.

안전한 처리 방식:

let number = parseInt($('#input').val(), 10);
if (isNaN(number)) {
  number = 0;
}

3. 소수점 처리

parseInt()는 소수점을 버리고 정수만 반환한다. 소수점이 필요한 경우에는 parseFloat() 또는 Number()를 사용해야 한다.

let floatValue = parseFloat($('#price').val());
반응형

.val()을 활용한 동적 폼 검증 예시

예: 나이 입력이 18세 이상이어야 하는 경우

$('#age').on('blur', function() {
  let age = parseInt($(this).val(), 10);
  if (isNaN(age) || age < 18) {
    $('#warning').text('18세 이상만 가능합니다.');
  } else {
    $('#warning').text('');
  }
});

예: 다중 입력값 합산

$('.input-number').on('input', function() {
  let sum = 0;
  $('.input-number').each(function() {
    let val = parseInt($(this).val(), 10);
    if (!isNaN(val)) sum += val;
  });
  $('#total-sum').text(sum);
});
반응형

.val()을 사용한 jQuery 정수 처리 성능 최적화

대규모 프로젝트에서는 .val()을 반복 호출할 경우 성능 저하가 발생할 수 있다. 이를 방지하기 위해 한 번만 값을 받아두고 처리하는 것이 좋다.

성능 개선 전:

let a = parseInt($('#input').val(), 10);
let b = parseInt($('#input').val(), 10); // 불필요한 중복 호출

성능 개선 후:

let value = $('#input').val();
let a = parseInt(value, 10);
let b = parseInt(value, 10);

또한, .val()을 DOM이 완전히 로드된 이후에 호출해야 올바른 값을 받을 수 있다.

$(document).ready(function() {
  let value = $('#input').val();
});
반응형

.val()과 정수 변환을 사용하는 고급 사용자 정의 함수

재사용 가능한 함수는 코드 유지보수를 크게 향상시킨다.

안전한 정수 변환 함수

function getIntVal(selector) {
  let val = $(selector).val();
  let parsed = parseInt(val, 10);
  return isNaN(parsed) ? 0 : parsed;
}

사용 예:

let total = getIntVal('#price') * getIntVal('#qty');

조건부 로직 처리

function isValidAge(selector) {
  let age = getIntVal(selector);
  return age >= 18;
}
반응형

결론

  • .val()은 폼 요소에서 값을 문자열로 가져온다.
  • 숫자 계산이 필요한 경우 반드시 parseInt() 또는 Number()로 변환해야 한다.
  • 빈값, NaN, 소수점 처리 등 다양한 상황을 고려해야 한다.
  • 성능과 유지보수를 위해 사용자 정의 함수와 캐싱 전략을 적극 활용하는 것이 바람직하다.

jQuery를 사용하는 웹 폼에서 정수 데이터를 다룰 때 .val()과 정수 변환에 대한 깊은 이해는 품질 높은 코드를 작성하는 핵심이다.

반응형