2012-02-19 8 views
0

모든 필드가 채워지는데이 코드가 모든 값을 채우는 이유는 무엇입니까? 실제로 비어있는 경우에만 "모든 필드 채우기"메시지를 제공해야합니다.양식 필드 확인

<html> 
<head> 
<title>javascript</title> 
</head> 
<body> 
<h1>test page</h1> 
<hr> 
<script type="text/javascript"> 
function checkForm(form) { 
    for(var i = 0; i<form.elements.length; i++) { 
     if(form.elements[i].value == "") { 
      alert("Please fill out all fields."); 
      return false; 
     } 
    } 
    return true; 
} 
</script> 

<form onSubmit="return checkForm(this)"> 
<input type="text" name="firstName"><br> 
<input type="text" name="lastName"> 
<input type="submit"> 
</form> 
</body> 
</html> 

답변

1

제출 버튼은 양식 요소이며 값을 지정하지 않았습니다. 따라서 JS는 입력을 반복하고 제출 버튼으로 이동하여 값을 찾지 않고 경고를 발생시킵니다.

보십시오 : 코드가 모든 입력 필드를 확인하기 때문에

function checkForm(form) { 
    for(var i = 0; i<form.elements.length; i++) { 
     if(form.elements[i].type == "input" && form.elements[i].value == "") { 
      alert("Please fill out all fields."); 
      return false; 
     } 
    } 
    return true; 
} 
0

그것은 너무 버튼을 제출,이 경우입니다. 이 시도 당신은 또한에 가득 버튼을 제출 있는지 확인 점검하는

function checkForm(form) { 
    for (var i = 0; i < form.elements.length; i++) { 
     if (form.elements[i].value == "" && form.elements[i].type != 'submit') { 
      alert("Fill out ALL fields."); 
      return false; 
     } 
    } 
    return true; 
} 
+0

당신은 아마로 "제출하지"싶지 않아 양식에 체크 박스 및/또는 라디오 버튼이있는 경우이 메시지가 표시됩니다. – Mala

+0

@Mala - 양식에 양식이 없습니다. 만약 그렇다면, 나는 그들을 암호화했을 것이다. OP 코드로 가면됩니다. 감사. – j08691

+0

공정하지만 내 의견으로는 기능적인 의미 상 의미가 일치하는 것이 좋습니다. 그렇지 않으면 더 짧고 약간 빠르기 때문에 요소 [0]과 [1]에 대한 하드 코드 검사가 필요할 수 있습니다. 여전히 제공된 코드로 작동합니다. – Mala

0

을 :.이에 기능을 변경

function checkForm(form) { 
    var win = true; 
    elements = form.elements; 
    for(var i = 0; i<elements.length; i++) { 
     if(elements[i].value == "" && elements[i].type != "submit") { 
      win = false; 
     } 
    } 
    if(!win){ 
     alert("please fill out ALL fields!"); 

    } 
    return win; 
}