2010-10-13 97 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