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 不适用,我会为 A 输入 10。

有什么方法可以检查每个字段集是否加起来为 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 validate 必须编辑一个函数来容纳数组。我更改了以下功能:

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",
        }
    });
});

但它继续到下一个字段集,没有错误。

4

1 回答 1

1

在这种情况下,创建一个禁用的新输入,当各个权重值发生变化时,将此禁用输入的值更改为总和。验证禁用的输入 - 要求它的值等于 10,如果不是,则显示错误。

于 2012-04-12T21:28:10.197 回答