2013-11-22 2 views
0

유효성 검사가 포함 된 양식을 작성 중이며 채워진 입력란없이 양식을 제출하면 오류 메시지가 나타나지만 여전히 진행됩니다. 어쩌면 다른 누군가가 내 실수를 볼 수 있습니다. 아래에서는 폼과 유효성 검사기 모두에 대한 스크립트를 추가했습니다.양식의 유효성을 검사하고 있지만 여전히 오류 메시지 이후에도 계속 전송합니다.

미리 감사드립니다.

function validateForm() 
{ 
    var x=document.forms["contactform"]["fname"].value; 
    if (x==null || x=="" || x=="First Name*") 
    { 
     alert("Please Provide your First Name"); 
     return false; 
    } 

    var y=document.forms["contactform"]["lname"].value; 
    if (y==null || y=="" || y=="Last Name*") 
    { 
     alert("Please Provide your Last Name"); 
     return false; 
    } 

    var em = document.forms["contactform"]["email"].value; 
    if (em == null || em == "" || em == "Email*") 
    { 
     alert("Please Provide your Email"); 
     return; 
    } 

    var atpos=em.indexOf("@"); 
    var dotpos=em.lastIndexOf("."); 
    if (atpos<1 || dotpos<atpos+2 || dotpos+2>=em.length) 
    { 
     alert("E-mail address is not valid"); 
     return false; 
    } 

    var ph = document.forms["contactform"]["phone"].value; 
    if (ph ==null || ph=="" || ph=="Phone*") 
    { 
     alert("Please Provide your Phone Number"); 
     return; 
    } 



     document.contactform.submit(); 

} 

<form class="cmxform" id="contactform" method="post" action="contact-life-factor2.asp" > 
       <input name="fname" type="text"class="required" onBlur="if(this.value=='')this.value=this.defaultValue;" onFocus="if(this.value===this.defaultValue)this.value='';" value="First Name*" /> 
       <input name="lname" type="text"class="required" onBlur="if(this.value=='')this.value=this.defaultValue;" onFocus="if(this.value===this.defaultValue)this.value='';" value="Last Name*" /> 
       <input name="company" type="text"class="" onBlur="if(this.value=='')this.value=this.defaultValue;" onFocus="if(this.value===this.defaultValue)this.value='';" value="Company" /> 
       <input name="email" type="text" class="required" onBlur="if(this.value=='')this.value=this.defaultValue;" onFocus="if(this.value===this.defaultValue)this.value='';" value="Email*"/> 
       <input name="phone" type="text" class="" onBlur="if(this.value=='')this.value=this.defaultValue;" onFocus="if(this.value===this.defaultValue)this.value='';" value="Phone*"/><br> 
       <div class="clearfix"></div> 
       <div style="padding-left:6px; padding-top:5px; font-weight:bold; color:#686868;">Comments:</div> 
       <textarea name="comments" cols="" rows="" onBlur="if(this.value=='')this.value=this.defaultValue;" onFocus="if(this.value===this.defaultValue)this.value='';" value="comments" ></textarea> 

       <input type="submit" value="Submit" name="submit" class="submit" onClick="javascript:validateForm();" style="margin-right:44px;"/> 
       </form> 
+0

'의 onclick = "validateForm(); false를 반환;"로 양식 태그로 이동' –

답변

1

의 onclick의 그래서 문제의 몇 가지가 있습니다

<form class="cmxform" id="contactform" method="post" onsubmit="return validateForm();" action="contact-life-factor2.asp" > 


function validateForm() 
{ 
var x=document.forms["contactform"]["fname"].value; 
if (x==null || x=="" || x=="First Name*") 
{ 
    alert("Please Provide your First Name"); 
    return false; 
} 

var y=document.forms["contactform"]["lname"].value; 
if (y==null || y=="" || y=="Last Name*") 
{ 
    alert("Please Provide your Last Name"); 
    return false; 
} 

var em = document.forms["contactform"]["email"].value; 
if (em == null || em == "" || em == "Email*") 
{ 
    alert("Please Provide your Email"); 
    return false; 
} 

var atpos=em.indexOf("@"); 
var dotpos=em.lastIndexOf("."); 
if (atpos<1 || dotpos<atpos+2 || dotpos+2>=em.length) 
{ 
    alert("E-mail address is not valid"); 
    return false; 
} 

var ph = document.forms["contactform"]["phone"].value; 
if (ph ==null || ph=="" || ph=="Phone*") 
{ 
    alert("Please Provide your Phone Number"); 
    return; 
} 

} 
2

형태로 검증 나던 stop.use의 onsubmit를 제출

  1. return;return false; 또는 return true; 일치하지 않는 경우 양식이 (true)을 제출하는지 () 제출할지 여부를 결정하므로 반환 값에 명시해야합니다.).

  2. 당신의 제출 버튼에서 온 클릭을 제거하고 onsubmit 이벤트 onsubmit="return validateForm()"

관련 문제