2010-10-13 100 views
0

我是新來的jQuery,來自原型。我試圖在表單中遍歷表單以在表單提交之前進行一些驗證。在頁面上有相同表單的多個版本,使用css類,但不是單個的ID。使用jQuery在單個元素中遍歷

這裏是我會怎麼做它在原型:

$$(".validatedForm").each(function(form) { 
    form.observe("submit", function(event) { 
     var vForm = event.findElement("form"); 
     var vCheckbox = vForm.down(".validatedCheckbox"); 

     if (vCheckbox.checked) 
      return true; 

     alert("Please accept the Terms and Conditions first"); 
     event.stop(); 
     return false; 
    } 
} 

我用jQuery遇到的問題是,我不能用「event.target」元素的遍歷方法,因爲它不會像原型那樣擴展 - 如果我用美元符號包圍它,我會在頁面上獲得每一個表單!

+0

不要忘記點擊空心旁打勾正確答案! :) – 2010-10-19 20:39:23

回答

1

這裏是jQuery相當於:

$(".validatedForm").submit(function(e) { 
    var shouldSubmit = false; 
    $(this).children(".validatedCheckbox").each(function() { 
     if($(this).attr('checked')) { 
      shouldSubmit = true; 
      return; //return from closure. 
     } 
    }); 
    if(!shouldSubmit) { 
     alert("Please accept the Terms and Conditions first"); 
     e.preventDefault(); 
    } 
}); 
+0

不是'each' extraneous ...只需調用$('。validatedForm')。submit(function(event){...});'將遍歷所有添加處理程序的表單。 – prodigitalson 2010-10-13 04:40:39

+0

@prodigitalson,是的。我忘了把它弄平。謝謝! – 2010-10-13 04:42:18

+0

謝謝!這看起來像是指向了正確的方向,但是,你在第4行有vCheckbox,它並沒有設置在任何地方。我應該怎樣設置它? – 2010-10-13 04:46:56