2012-04-04 84 views
2

我被困在爲聯繫表單寫jQuery驗證。我寫了一個簡單的代碼來檢查輸入表單是否包含任何字符;如果有任何字符,則可能會繼續運行PHP代碼並向我發送電子郵件。否則,顯示一個錯誤框告訴客戶仔細檢查。下面是代碼:基本的jQuery聯繫表格問題

(function($){ 
     $('.required',$form).each(function(){ 
     var inputVal = $('form-element-name').val(); 
     var inputVal2 = $('form-element-email').val(); 

       if(inputVal == ''){ 
        $('errorbox1').addClass('errormsg1'); 
       } 

       else if(inputVal2 == '') { 
        $('errorbox2').addclass('errormsg2'); 
       } 
      } 
    } 

Inputval是名稱的inputfield和inputval2是電子郵件的inputfield。此外,Errorbox1是一個空的容器,errormsg1是將給errorbox1一個表示錯誤的背景圖像的類。

Here is a jsFiddle

+0

檢查JSLint的...有很多你的代碼,你需要修復就可以正常調試此之前的錯誤。 – 2012-04-04 15:49:39

回答

0

$('errorbox1')$('errorbox2')

應該是

$('.errorbox1')$('.errorbox2')如果類選擇

$('#errorbox1')$('#errorbox2')如果ID選擇

注意點/#的errorbox1之前。

下面是類和ID選擇引用,

http://api.jquery.com/class-selector/

http://api.jquery.com/id-selector/

+0

好點,但它仍然不工作:( – 2012-04-04 14:55:50

+0

@ShadAsinger檢查evilunix的答案,他在你的代碼中發佈了額外的錯誤:P – 2012-04-04 14:56:36

+0

取決於如果errorbox1是一個類或ID,在後面的情況下它應該#而不是dot – 2012-04-04 14:57:31

1

它看起來像你缺少從你的jQuery選擇哈希 - 你應該有$('#form-element-name')代替$('form-element-name') - 這將根據他們的id選擇元素。

或者 - 按類來選擇點。

您需要將您的代碼放在表單的onsubmit事件中,然後return false;或使用e.preventDefault();來取消表單提交。你的小提琴例子

$('#your-form-id').submit(function() { 
    // if error then cancel form submission 
}); 
+0

真的很奇怪。它似乎現在可以工作,但是當我檢查時,我可以看到錯誤框閃爍,並立即將我重定向到PHP,它本質上會向我發送電子郵件。 – 2012-04-04 15:00:07

+0

這裏是所有的html/css/jquery:http://jsfiddle.net/U6xGA/ – 2012-04-04 15:06:48

+0

請看上面 - 在顯示錯誤信息後直接取消表單提交。 – evilunix 2012-04-04 15:11:15