循环为10个表单创建验证脚本

时间:2012-03-28 14:50:03

标签: jquery forms loops validation

有没有办法使用循环创建其中的10个,增加到处有“1”

的地方
//1
$('#catbudgetform1').validate({
   errorPlacement: function(error, element) {},

   rules: {budgTotal1: { required: true, money:true }},

   submitHandler:function() {
      var theForm = $('#catbudgetform1');
      updateSuccess(theForm,1);
   },

   invalidHandler: function(){
      alert('Valid Number (ex. 1234 or 1234.00) is Required');
   }
});

**注意#catbudgetform1和budgTotal1需要是#catbudgetform2和budgTotal2,依此类推等等

或者有没有办法写这个,它会独立地对十个表格中的每一个进行验证,但是没有写十次?

3 个答案:

答案 0 :(得分:1)

我会尝试只使用类,没有ID,并使用submitHandler使用$(this).closest("form")代替$("#catbudgetform1")

$('.catbudgetform').each(function(i){
   $(this).validate({
       errorPlacement: function(error, element) {},

       rules: {"budgTotal" + i: { required: true, money:true }},

       submitHandler:function() {
          var theForm = $(this).parents("form");
          updateSuccess(theForm,i);
       },

       invalidHandler: function(){
          alert('Valid Number (ex. 1234 or 1234.00) is Required');
       }
    });
});

答案 1 :(得分:1)

解决此问题的一种更简单的方法是将元素从具有唯一ID更改为具有特定类。这极大地简化了您的逻辑,因为类允许在此处进行分组。

$('.catbudgetform').each(function (index) {
   var theRules = {};
   theRules['budgTotal' + index] = { required: true, money:true };

   $(this).validate({
       errorPlacement: function(error, element) {},

       rules: theRules,

       submitHandler:function() {
          var theForm = $(this);
          updateSuccess(theForm, index);
       },

       invalidHandler: function(){
          alert('Valid Number (ex. 1234 or 1234.00) is Required');
       }  
   });
});

答案 2 :(得分:0)

我会尝试做一些像Flöcsy建议的那样的事情,但是因为听起来你已经有一些代码在其中编码了这个索引,所以下面会这样做。

for (var i=1; i <= 10; i++) {
    // Freeze the loop variable with a self calling function
    (function(index){
        // Can't do a literal object if the property is dynamic
        var rules = {};
        rules['budgTotal'+index] = { required: true, money:true };
        $('#catbudgetform' + index).validate({

            errorPlacement: function(error, element) {},

            rules: rules,

            submitHandler:function() {
                var theForm = $('#catbudgetform' + index);
                updateSuccess(theForm,index);
            },

            invalidHandler: function(){
                alert('Valid Number (ex. 1234 or 1234.00) is Required');
            }
        });
    })(i); // Passing the loop variable into the anonymous self calling function
}