텍스트 상자에서 정수 값을 얻으려면 NAN 또는 NULL 등을 확인하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/793445

  •  16-09-2019
  •  | 
  •  

문제

텍스트 상자에서 JavaScript를 통해 값을 가져오고 있습니다. 텍스트 상자가 비어 있으면 돌아옵니다 NaN. 빈 끈이 널, 빈 등이 있으면 반환하고 싶습니다.

어떤 점검을해야합니까? if(NAN = tb.value)?

도움이 되었습니까?

해결책

흠, 여기서 뭔가 비린내.

빈 텍스트 박스는 어떤 브라우저에서 NAN을 반환합니까? 나는 그런 일이 일어나지 않았고 그것을 재현 할 수 없습니다.

텍스트 상자의 값은 실제로 문자열입니다. 빈 텍스트 상자가 빈 문자열을 반환합니다!

아, 그리고 무언가가 Nan인지 확인하려면 사용해야합니다.

if (isNaN(tb.value))
{
   ...
}

참고 : isNaN()-기능이 반환됩니다 true 빈 줄을 제외하고는 숫자로 구문 분석 할 수없는 모든 것. 즉, 숫자 입력에 대한 좋은 점검 (Regexes보다 훨씬 쉽습니다).

if (tb.value != "" && !isNaN(tb.value))
{
   // It's a number
   numValue = parseFloat(tb.value);
}

다른 팁

이런 식으로 할 수도 있습니다.

var number = +input.value;
if (input.value === "" || number != number)
{
    // not a number
}

난은 그 자체가 아니라 아무것도 같지 않습니다.

+를 사용하여 문자열에서 숫자로 변환하는 것을 좋아하지 않으면 일반 parseint를 사용하지만 항상 기반을 주어야합니다.

var number = parseInt(input.value, 10)

그렇지 않으면 JavaScript가 Octal 번호라고 생각하기 때문에 "08"은 0이됩니다.

입력 텍스트 상자에 대한 참조가 있다고 가정합니다.

function getInteger(input) {
  if(!input || !input.value) return "";

  var val = parseInt(input.value, 10);

  if(isNaN(val)) return "";
  else return val;
}

당신이 할 수있는 한 가지는 텍스트 상자의 값에 대한 Regex 점검과 허용 된 숫자의 형식에 맞는지 확인한 다음 형식에 맞는 프로세스를 수행하는 경우 빈 문자열을 반환하는 것입니다.

편집하다: 이것은 내가 앞에있는 일부 코드의 예입니다 (가장 좋은 정규 표현이 아닐 수도 있음) :

var anum=/(^\d+$)/;

if (!anum.test(document.getElementById("<%=txtConceptOrderValue.ClientID %>").value))
{
    alert("Order Value must be a valid integer");
    document.getElementById("<%=txtConceptOrderValue.ClientID %>").focus();
    return false;
}

편집 2: 또한 asp.net을 사용하고 있다는 점에 주목해야합니다. 그래서 텍스트 상자에 약간의 펑키 한 방법이 있습니다. 일반적인 JavaScript 케이스에서는 혼란스럽지 않을 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top