2013-03-11 67 views
0

我想要做的是:Jquery電子郵件驗證似乎被忽略

讓用戶輸入一個電子郵件。如果無效;顯示錯誤。如果這是一封有效的電子郵件,請將.wizard div向上滑動並顯示消息「酷」!

截至目前我的代碼(fiddle here)並沒有削減它。它似乎沒有將.error類添加到輸入中,也沒有顯示.wizard div。我究竟做錯了什麼?另一組眼睛將非常感激。

$(".wizard").hide(); 
$("#signup").show(); 

$(".continue").click(function() { 
    var valid = true; 
    $("#" + $(this).attr("validationDiv")).find("input").each(function() { 
     if (!/^[email protected]+.S+$/.test($this).val()) valid = false; // if its not a valid email 
      ($this).addClass('error'); // show error 
      ($this).val('Please Insert a valid Email');   
    }); 
    if (valid) { // if it is valid 
     $(".wizard").slideUp(); // have this div show 
     $("#" + $(this).attr("data-next-id")).slideDown(); 
    } 
}); 

謝謝!

+0

有什麼不工作解決呢?在我的情況下,當輸入一個非電子郵件地址和一個有效的電子郵件地址時,什麼也沒有發生 – kennypu 2013-03-11 03:51:30

+0

對不起,沒有解釋。現在:錯誤消息(當它是一個不正確的電子郵件)和.wizard(顯示它是一個正確的電子郵件)div不顯示。我想知道爲什麼以及如何修復它。 :) – Modelesq 2013-03-11 03:54:01

+0

在'validationDiv'中給出的id沒有'signup'的div,雖然有一個'signUp' – 2013-03-11 03:57:20

回答

1

貌似很多粗心犯錯

$(".wizard").hide(); 
$("#signup").show(); 

$(".continue").click(function() { 
    var valid = true; 
    var that = this; 
    $("#" + $(this).attr("validationDiv")).find("input").each(function() { 
     var $this = $(this); 
       if (!/^[email protected]+.S+$/.test($(this).val())) 
        valid = false; 
       ($this).addClass('error'); 
       ($this).val('Please Insert a valid Email'); 
      }); 
    if (valid) { 
     $(".wizard").slideUp(); 
     $("#" + $(that).attr("data-next-id")).slideDown(); 
    } 
}); 

演示:Fiddle

問題我發現
1.沒有元素的ID爲signup,如validationDiv屬性所示,所以添加id="signup"頂端DIV(class="sighUp"
2.在您使用$this多次內回調,但它從來沒有定義,由var $this = $(this);

0

當你真的應該滑動向導時,向上滑動向導。

1

第一件事情,你真的應該學習的jQuery和JavaScript之前...

$this應該$(this)。和你混在一起classed/id,再加上你不使用正確的元素名稱。難怪它不工作。這裏有一個修正的例子:http://jsfiddle.net/HvjtB/28/

現在你只需要創建一個正確的電子郵件檢測正則表達式:http://www.regexper.com/