2012-11-19 2 views
4

readonly 텍스트 input이있는 함수를 사용하고 있고 함수를 실행할 때 숫자 값 +1이 필요합니다. 함수를 실행하면 반환되는 숫자는 61이어야합니다.읽기 전용 텍스트 입력 필드의 jQuery 값에 +1 추가

대신 문자열에 숫자 1을 추가하는 것이 아니라 601이 나오게됩니다. 무슨 일이 일어나고 있는지에 대한 단서가 있습니까? 빼기, 곱하기 및 나눗셈이 모두 올바르게 작동합니다. 여기에 스 니펫이 있습니다

var num= $("#originalnum").val() + 1; 
$("#originalnum").val(num); 

그리고 몇 가지 다른 변형을 시도했지만 뭔가 빠졌습니까?

var val = $("#originalnum").val(); 

var num = 0; 

if (!isNaN(val)) 
    num= parseInt(val) + 1; 
+0

'':-) 사용 – Bergi

답변

19

간단한 단항 +으로 충분합니다. 이 경우 문자열을 숫자로 RN :

var num = +$("#originalnum").val() + 1; 
$("#originalnum").val(num); 
+0

1 + + 연산자는 숫자가 더 빠르다는 것을 나타내는 변수입니다. (사용 된 경우) – VeXii

+0

parseInt (x, 10) 그래서 앞에 + 기호를 사용하면 스팬 또는 텍스트 입력을 할 수 있습니다. im 그것은 문자열이 아니라 int임을 나타냅니다. – Dnaso

+0

실제로 나는 차이점을 볼 수는 없지만, phonegap과 물건에 사용하는 경우에는 (그리고 아마도 더 나은 연습 등으로)이 대답을 좋아합니다. – Dnaso

6

당신은 확실히 값이 수 (사용 때는 isNaN 기능)입니다 parseInt 기능을 사용해야

var num= parseInt($("#originalnum").val(),10) + 1; 

그래서 전화 번호 대신의 정수로 처리됩니다

문자열 ( .val()은 결과를 기본적으로 문자열로 처리 함)

+0

입력 상자가 텍스트 일지라도 사용할 수 있습니까? – Dnaso

+0

그리고 다른 모든 작업이 작동하는 이유는 알 수 있을까요? ie 곱셈 분할 etc.? – Dnaso

+0

숫자가 아닌 경우 NaN을 반환합니다. –

5

사용 parseInt() :

+1

'radix * 매개 변수로'10'을 잊지 마세요. – Bergi

+0

좋은 지적, 고마워요! – DarkAjax

9

문제는 .val() 문자열로 요소의 값을 반환하고 문자열에 + 연산자를 사용할 때 문자열 연결을 수행한다는 것이다. 당신은 첫 번째 숫자로 값을 변환 할 필요가 : 당신이 사용하는 경우 parseInt() 당신이 해야이 두 번째 매개 변수로 기수 (10)를 포함하는 것이

var num = +$("#originalnum").val() + 1;   // unary plus operator 
// OR 
var num = Number($("#originalnum").val()) + 1;  // Number() 
// OR 
var num= parseFloat($("#originalnum").val()) + 1; // parseFloat() 
// OR 
var num= parseInt($("#originalnum").val(),10) + 1; // parseInt() 

참고하거나 함께 문자열을 처리 (브라우저에 따라)합니다 선행 0은 8 진수이고 문자열은 "0x"이며 16 진수입니다. 또한 parseInt()은 문자열 끝의 숫자가 아닌 문자를 무시합니다 (예 : 사용자가 소수점으로 의도 한 정 위치를 포함하여). parseInt("123.45aasdf",10)123을 반환합니다. 마찬가지로 parseFloat()은 문자열 끝에있는 숫자가 아닌 문자를 무시합니다.

또한 사용자가 입력 한 값인 경우 실제 숫자임을 다시 확인하고 그렇지 않은 경우 오류 메시지를 제공해야합니다. 그 사업자 "작업"(문자열 가정이 변환 할 수 있습니다) 그 이유는 그래서

당신이 *, / 또는 - 연산자 JS를 사용

는 자동으로 문자열을 숫자로 변환하려고합니다.

+0

Number() 솔루션을 좋아합니다. 자체 문서화입니다. –

관련 문제