2012-07-07 80 views
-1

这里是我的验证代码:使表单验证返回true?

function validateEnquiryForm() { 
     var x = document.forms["enquiry"]["name"].value; 
     if(x == null || x == "" || x == "Name") { 
      $('#name').removeClass('custom').addClass('error'); 
      $('.name-error').show(); 
      //return false; 
     } else if(x !== null || x !== "" || x !== "Name") { 
      $('#name').removeClass('error').addClass('custom'); 
      $('.name-error').hide(); 
     } 
     var x = document.forms["enquiry"]["phone"].value; 
     if(x == null || x == "" || x == "Phone Number") { 
      $('#phone').removeClass('custom').addClass('error'); 
      $('.phone-error').show(); 
      //return false; 
     } else if(x !== null || x !== "" || x !== "Phone Number") { 
      $('#phone').removeClass('error').addClass('custom'); 
      $('.phone-error').hide(); 
     } 
     var x = document.forms["enquiry"]["requirements"].value; 
     if(x == null || x == "" || x == "Add any other extra requirements here...") { 
      $('#requirements').removeClass('textarea-1').addClass('error'); 
      $('.requirements-error').show(); 
      //return false; 
     } else if(x !== null || x !== "" || x !== "Add any other extra requirements here...") { 
      $('#requirements').removeClass('error').addClass('custom'); 
      $('.requirements-error').hide(); 
     } 
     var x = document.forms["enquiry"]["summary"].value; 
     if(x == null || x == "" || x == "Summarise your project in a few key words...") { 
      $('#summary').removeClass('custom').addClass('error'); 
      $('.summary-error').show(); 
      //return false; 
     } else if(x !== null || x !== "" || x !== "Summarise your project in a few key words...") { 
      $('#summary').removeClass('error').addClass('custom'); 
      $('.summary-error').hide(); 
     } 
     var x = document.forms["enquiry"]["email"].value; 
     var atpos = x.indexOf("@"); 
     var dotpos = x.lastIndexOf("."); 
     if(atpos < 1 || dotpos < atpos + 2 || dotpos + 2 >= x.length) { 
      $('#email').removeClass('custom').addClass('error'); 
      $('.email-error').show(); 
      //return false; 
     } else if(atpos > 1 || dotpos > atpos + 2 || dotpos + 2 <= x.length) { 
      $('#email').removeClass('error').addClass('custom'); 
      $('.email-error').hide(); 
     } 
     $('.error-banner').effect("pulsate", { 
      times: 2 
     }, 1000); 
     return false; 
    } 

当代码运行时,它会检查所有的领域,看看他们是空白。如果.error-banner脉冲中有一个或多个填充不正确并显示单个消息。问题是当表单填写正确时,此横幅仍然闪烁。有人能告诉我我要去哪里吗??

+1

那么函数**总是**返回'false'。你如何期待它做别的事情? – Pointy 2012-07-07 14:41:49

+1

此外,jQuery与'document.forms'的奇怪组合是......奇怪的。 – Pointy 2012-07-07 14:42:15

+1

听说过数据结构和代码可读性吗? – Engineer 2012-07-07 14:42:34

回答

2

据我所知,你的功能与此块结束时,无条件地:

$('.error-banner').effect("pulsate", { 
    times: 2 
}, 1000); 
return false; 

它也许改为:

var valid = true; 

// in your error handling conditionals, set valid to false: 
if(x == null || x == "" || x == "Phone Number") { 
    $('#phone').removeClass('custom').addClass('error'); 
    $('.phone-error').show(); 
    valid = false; 
} 

... 

if (!valid) { 
    $('.error-banner').effect("pulsate", { 
    times: 2 
    }, 1000); 
} 
return valid; 

我与大多数评论者的同意,您的尽管如此,仍有很大的改进空间。

+0

我是非常新的Javascript和jQuery,我只是使用我知道现在得到的 – user1449737 2012-07-07 14:46:28

+0

也你的代码工程就像一个魅力!非常感谢你。 (将在4分钟内接受答案) – user1449737 2012-07-07 14:50:02