2012-04-12 85 views
0

我使用jQuery形式向导插件。我有20个问题,每个问题有三个答案。每个答案都可以有重量。对于每个问题,答案的总重量必须等于10.搞清楚形式验证,以跨越多个输入验证值

<fieldset id="first" class="step"> 
    <input type="text" size="2" maxlength="2" value="" name="question1[]" class="required"/>A: Inspiring others with a compelling vision for change.<br /> 
    <input type="text" size="2" maxlength="2" value="" name="question1[]" />B: Engaging others to buy-into the change.<br /> 
    <input type="text" size="2" maxlength="2" value="" name="question1[]" />C: Executing a project plan and managing accountabilities.<br /> 
    <label for="question1[]" class="error" style="display:none;">Your values must add up to 10!</label> 
</fieldset> 

这基本上是个性评估。比方说,我觉得A和C不适用,我会在10 A.

输入有没有什么办法来检查,看看是否每个字段集加起来10,如果没有发送错误信息?

我使用jQuery验证插件,但是这似乎有点太具体,因为我知道它会检查数等

我试图沿着以下,甚至得到一个添加的东西需要检查通过,但我不知道在哪里何去何从:

$(document).ready(function() { 
    $("#Form").validate({ 
     submitHandler: function(form) { 
      form.submit(); 
     } 
    }); 
    $("#Form input[name='question1']").each(function() { 
     $(this).rules("add", { 
      required: true, 
      maxlength: 2, 
      messages: { 
       required: "Required", 
       minlength: jQuery.format("Max length of {2} characters.") 
      } 
     }); 
    }); 
}); 

我还发现,jQuery验证不得不修改以适应阵列功能。我已经改变了以下功能:

checkForm: function() { 
    this.prepareForm(); 
    for (var i=0, elements=(this.currentElements = this.elements()); elements[i]; i++) { 
     if (this.findByName(elements[i].name).length != undefined && 
      this.findByName(elements[i].name).length > 1) { 

      for (var cnt = 0; cnt < this.findByName(elements[i].name).length; cnt++) { 
       this.check(this.findByName(elements[i].name)[cnt]); 
      } 
     } 
     else { 
      this.check(elements[i]); 
     } 
    } 
    return this.valid(); 
} 

我也试过这样:

$(document).ready(function(){ 
    $("#Form").validate({ 
     rules: { 
      question1: { 
       required: true 
      } 
     }, 
     submitHandler: function(form) { 
      form.submit(); 
     } 
    }); 
}); 

的这一切似乎工作,甚至给我一个“必要”的错误。控制台中没有错误。我需要在按下“下一步”按钮时对每个问题进行验证。下一个按钮确实有type=submit,所以理论上至少应该看到我说问题1必须要求,但无济于事。

我也试过这样:

$().ready(function() { 
    // validate the comment form when it is submitted 
    $("#Form").validate({ 
     rules: { 
      "question1[]": "required" 
     }, 
     messages: { 
      "question1[]": "Input is required", 
     } 
    }); 
}); 

但接着没有错误的下一个字段集。

+0

进出口新的这一切我只是在努力确保其过程甚至有可能 – RezenX 2012-04-12 20:03:39

+0

它是可能的。一切皆有可能。 – Dutchie432 2012-04-12 20:47:43

+0

是的,我问一个问题,并得到-1哈哈。可爱的,因为我试图建立我的等级。我只是失去了所有这个自定义验证 – RezenX 2012-04-12 20:49:01

回答

1

在这种情况下,创建一个新的输入这是禁用,并且当所述各个权重值的变化,改变该禁用输入的值是总和。验证禁用的输入 - 要求其值等于10,如果不是,则显示错误。

+0

我喜欢这个想法。让我试试吧。 – RezenX 2012-04-12 21:39:34

+0

精彩的建议。现在工作无瑕!谢谢我将粘贴一些示例代码,让所有人都可以看到它工作,一旦我完全消除它。 – RezenX 2012-04-13 21:06:48

+0

谢谢,我很高兴能帮到你。 – 2012-04-13 22:00:13