텍스트 상자에서 정수 값을 얻으려면 NAN 또는 NULL 등을 확인하는 방법은 무엇입니까?
-
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 케이스에서는 혼란스럽지 않을 수 있습니다.