2013-07-30 3 views
0

Проверка формы не работает из-за использования атрибута value = "" в форме. Может ли кто-нибудь предложить мне любой способ проверки формы с текущим кодом проверки с использованием атрибута value = "" в форме.Проверка формы не работает

HTML код-

<form action="email.php" method="post" name="contactForm" id="contactForm" onsubmit="return validateForm();"> 
    <input type="text" onfocus="if(this.value == 'Name'){this.value = '';}" onblur="if(this.value == ''){this.value='Name';}" id="Name" value="Name" name="name"> 
    <input type="text" onfocus="if(this.value == 'Company'){this.value = '';}" onblur="if(this.value == ''){this.value='Company';}" id="Company" value="Company" name="company"> 
    <input type="text" onfocus="if(this.value == 'Email'){this.value = '';}" onblur="if(this.value == ''){this.value='Email';}" id="Email" value="Email" name="email"> 
    <input type="text" onfocus="if(this.value == 'Phone'){this.value = '';}" onblur="if(this.value == ''){this.value='Phone';}" id="Phone" value="Phone" name="phone">       

    <span> 
     <input type="text" onfocus="if(this.value == 'Geo Targeting'){this.value = '';}" onblur="if(this.value == ''){this.value='Geo Targeting';}" id="GeoTargeting" value="Geo Targeting" name="geo_targeting"> 
     <input type="text" onfocus="if(this.value == 'Web Site'){this.value = '';}" onblur="if(this.value == ''){this.value='Web Site';}" id="WebSite" value="Web Site" name="website">   
     <textarea onfocus="if(this.value == 'Message'){this.value = '';}" onblur="if(this.value == ''){this.value='Message';}" id="Message" name="message">Message</textarea> 
     <input class="sendBtn" name="submit" type="submit" value="Send" /> 
    </span> 
</form> 

Javascript код-

<script language="javascript" type="text/javascript"> 
    function validateForm() { 
     var x=document.forms["contactForm"]["name"].value; 
     if (x==null || x=="") { 
      alert("Name must be filled out"); 
      return false; 
     } 

     var x=document.forms["contactForm"]["company"].value; 
     if (x==null || x=="") { 
      alert("Company Name must be filled out"); 
      return false; 
     } 

     var x=document.forms["contactForm"]["email"].value; 
     var atpos=x.indexOf("@"); 
     var dotpos=x.lastIndexOf("."); 
     if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) { 
      alert("Email must be filled out/Not a valid e-mail address"); 
      return false; 
     } 

     var x=document.forms["contactForm"]["message"].value; 
     if (x==null || x=="") { 
      alert("Message must be filled out"); 
      return false; 
     } 
    } 
</script> 
+1

Я рекомендую использовать атрибут 'placeholder' вместо того, чтобы устанавливать значение по умолчанию для входов –

+1

Это можно сделать только с помощью JavaScript, но это намного сложнее (для того, чтобы вы могли писать и для кого читать ...). ** jQuery **, безусловно, может быть очень полезен здесь. – cars10m

+0

Просто обнаружил возможную причину, по которой он не работает: хотя вы явно возвращаете ложные значения для каждого случая, когда вы обнаруживаете незаконный элемент, который не дает положительного значения в случае успеха. – cars10m

ответ

0

У меня была очень похожая проблема с попыткой проверки же страниц с помощью AJAX запросов. В конце концов я понял, что проблема в том, что ничего не возвращалось TRUE для onSubmit. Попробуйте следующее:

<script language="javascript" type="text/javascript"> 
      function validateForm() 
      { 
      var x=document.forms["contactForm"]["name"].value; 
      if (x==null || x=="") 
       { 
       alert("Name must be filled out"); 
       return false; 
       } 

      var x=document.forms["contactForm"]["company"].value; 
      if (x==null || x=="") 
       { 
       alert("Company Name must be filled out"); 
       return false; 
       } 

      var x=document.forms["contactForm"]["email"].value; 
      var atpos=x.indexOf("@"); 
      var dotpos=x.lastIndexOf("."); 
      if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) 
       { 
       alert("Email must be filled out/Not a valid e-mail address"); 
       return false; 
       } 

      var x=document.forms["contactForm"]["message"].value; 
      if (x==null || x=="") 
       { 
       alert("Message must be filled out"); 
       return false; 
       } 
else { 
document.getElementById("contactForm").submit(); 
      } 
} 
</script> 

Это решило проблему для меня, когда у меня возникли проблемы с ней.

также, удобная маленькая хитрость, вместо того чтобы сказать

value="Name" 

вы могли бы попробовать

placeholder="Name" 

в противном случае он будет передавать значение по переменной и не будет проверять форму должным образом.

+0

placeholder = «Name» работает, Большое вам спасибо за помощь. –

Смежные вопросы