2012-01-10 4 views
6

여기 this 질문과 관련 있습니다. DOM의 요소에 값이 있는지 여부를 확인할 수 있습니까? 나는 그것을 'if'문에 넣으려고 노력 중이며 내 접근 방식이 올바른지 확실하지 않습니다.HTML 입력 요소가 비어 있거나 사용자가 값을 입력하지 않았는지 확인하십시오.

if (document.getElementById('customx')){ 
    //do something 
} 

를하거나해야한다 : 여기에 간다

if (document.getElementById('customx') == ""){ 
    //do something 
} 

편집 : 내 말은 가치에 의하여, customx 텍스트 입력 상자입니다. 이 필드에 입력 된 텍스트가 없는지 어떻게 확인할 수 있습니까?

+0

"값"을 정의합니다. 당신은 텍스트 내용을 의미합니까? 자식 요소? 'value' 속성? –

+0

값으로 무엇을 의미합니까? ''또는' myValue'? –

+0

안녕하세요, 미안 해요 내 질문에 더 명시해야합니다. 내 질문을 업데이 트했습니다 – zik

답변

14

getElementById 메서드는 요소와 상호 작용하는 데 사용할 수있는 Element 개체를 반환합니다. 요소가 없으면 null이 리턴됩니다. 입력 요소의 경우 객체의 value 속성에는 value 속성의 문자열이 포함됩니다. 다음과 같이 && 연산자 단락이 모두 null 및 빈 문자열 부울 문맥에서 "falsey"으로 간주되는, 우리는 요소의 존재와 값 데이터의 존재에 대해 확인을 결합 할 수 있다는 사실을 이용함으로써

:

var myInput = document.getElementById("customx"); 
if (myInput && myInput.value) { 
    alert("My input has a value!"); 
} 
0

첫 번째 것은 기본적으로 옳았습니다. 이것은 FYI, 나쁘다. DOM 노드와 문자열 사이의 동일성 검사를 수행합니다.

if (document.getElementById('customx') == ""){ 

DOM 노드는 실제로 JavaScript 객체 유형입니다. 따라서이 비교는 전혀 다른 두 가지 데이터 유형에 대한 동등 비교를 수행하기 때문에 전혀 작동하지 않습니다.

if (document.getElementById('customx').value === ""){ 
    //do something 
} 

value 속성은 당신에게 문자열 값을 줄 것이다 당신은 빈 문자열에 대한 것을 비교해야합니다

+2

첫 번째 중 하나가 올바르지 않습니다. 요소가 있는지 여부를 검사합니다. 값이 있는지 여부는 아닙니다. –

0

당신은 할 수 있습니다.

+1

''''은'''와는 다르지만 화면에 나타나기 어렵다는 것을 명심하십시오. – Quentin

+3

요소가없는 경우이 충돌이 발생합니다. –

2

getElementById는 요소가 DOM에서 발견되지 않으면 false를 반환합니다.

var el = document.getElementById("customx"); 
if (el !== null && el.value === "") 
{ 
    //The element was found and the value is empty. 
} 
2
var input = document.getElementById("customx"); 

if (input && input.value) { 
    alert(1); 
} 
else { 
    alert (0); 
} 
관련 문제