2012-04-25 4 views
0

이름 텍스트 필드가 비어 있는지 확인하려고합니다. 그렇다면 "나는 당신의 이름을 입력하십시오."라고 말한 div를 보여주고 싶습니다. 나는 시험을하고, 이름 = '이름'. 하지만 그 이후에는 아무 것도 나타나지 않습니다.자바 스크립트 else if 문 오류

function validate(input, name) { 
if(name=='name') { 
     if(input==null || input=="") { 
      name.style.visibility='visible'; 
      alert("please enter a value"); 
     } else { 
      alert("valid entry."); 
     } 
    } 
} 

경고 상자와 함께 입력 내용을 인쇄 할 때 아무 것도 표시되지 않습니다. 그래서 그것은 그것이 null이거나 ""다는 것을 알고 있습니다. 어떻게하면이 문제를 해결할 수 있습니까?

<input type="text" name="name" id="name" onblur="javascript: validate(this.value, this.id);" required /> 
    <div id="name" style="visibility:hidden; float:right;">Please fill in a name!</div> 
+4

name == 'name'은 나중에 객체로 참조 될 때 의미가 없습니다. – h0tw1r3

+3

HTML을 보여주고, 변수'name'이 어디에 할당되어 있는지 보여줍니다. 그리고 나서 [대표적인 데모를 보여주십시오] (http://jsfiddle.net/); 우리는 [SSCCE (Short, Self-Contained, Correct/Compilable Example)] (http://sscce.org/)를 찾고 있습니다. –

+0

@DavidThomas - 멋진 링크! –

답변

1

javascript: 프로토콜 만이 URL에 자바 스크립트가있을 때 사용되는이 이벤트 핸들러에서 사용하지 마십시오 :

여기 내 텍스트 필드입니다.

동일한 ID를 가진 두 개의 요소를 가질 수 없습니다. ID는 고유해야합니다.

XHTML에는 값이없는 속성이 없습니다. 단지 required이 아닌 required="required"을 사용해야합니다.

null 값을 확인할 필요가 없습니다. 텍스트 필드의 값은 결코 null이 아닙니다.

getElementById 메서드를 사용하여 ID에서 요소를 찾습니다.

function validate(input, name) { 
    if (name == 'name') { 
    if (input == '') { 
     document.getElementById('nameInfo').style.visibility = 'visible'; 
     alert("please enter a value"); 
    } else { 
     alert("valid entry."); 
    } 
    } 
} 

<input type="text" name="name" id="name" onblur="validate(this.value, this.id);" required="required" /> 
<div id="nameInfo" style="visibility:hidden; float:right;">Please fill in a name!</div> 
+0

+1하지만 OP가 XHTML을 사용하고 있다고 생각하는 이유는 무엇입니까? DOCTYPE은 없으며 실제 XHTML은 웹상에서 매우 드뭅니다. XML과 같은 마크 업은 신뢰할 수있는 지표는 아닙니다. 더 가볍게 SHORTAGs를 제거하기 위하여 OP에게 말하십시오. – RobG

+0

@RobG : 자체 폐쇄 입력 태그를 기반으로합니다. OP가 그가 XHTML을 사용하고 있는지 여부를 알고 있기 때문에 해당 점이 관련성이 있는지 여부를 알 수 있기를 바랍니다. – Guffa

+0

나는 HTML 5에서 그것을 보았 기 때문에 나는 단지 필요했다. – droidus