jQuery验证:初始/动态验证复选框

时间:2013-09-02 14:51:56

标签: jquery jquery-validate

我正在使用jquery验证插件:jQuery validation。现在,我有一个带有简单验证方法的代码片段,用于根据给定参数验证已选中复选框的数量

$.validator.methods.cbMinRequired = function (value, element, param) {
  return $(element).parent().find(":checked").length >= param;
};

$(function () {
    // validate the comment form when it is submitted
    $("#myform").validate({
        keyup: true,
        keypress: true,
        click: true,
        change: true,
        debug: true,
        errorClass: "invalid",
        rules: {
            mycheckboxes: {
                cbMinRequired: 1
            }
        }
    });
  });

查看我的小提琴:jsFiddle checkbox vaidation example

如您所见,我遇到了问题。

我必须首先触发“提交”来验证表单。但我想在加载后验证它。我认为没有最初触发提交的选项,因为最后我想用这个按钮触发'保存动作',在页面加载后不应该调用它。

任何想法如何处理这个?

3 个答案:

答案 0 :(得分:1)

您可以调用.valid()方法触发验证而无需提交。

if (!$("#myform").valid()) {
    // Complain
}

查看我的fiddle版本,它会在页面加载时显示验证消息。

答案 1 :(得分:1)

您的代码:

$(function () {
    $("#myform").validate({
        keyup: true,
        keypress: true,
        click: true,
        change: true,
        debug: true,
        errorClass: "invalid",
        rules: {
            mycheckboxes: {
                cbMinRequired: 1
            }
        }
    });
});

您的代码存在一个主要问题: There are no such options for this plugin名为keyupkeypressclickchange它们被称为onkeyuponfocusoutonclickonsubmit,默认情况下它们已经为“true”...如果没有,它们将无法设置为true打破插件。您只能将它们设置为false以禁用,或将它们设置为自定义功能。

然后,您可以使用the .valid() method以编程方式随时触发验证测试。

$("#myform").valid();

这将触发页面加载验证...

$(function () {

    $("#myform").validate({ // initialize the plugin
        // options
    });

    $("#myform").valid(); // trigger validation on page load

});

您的DEMO已更新http://jsfiddle.net/sVwFb/4/

答案 2 :(得分:-1)

Barman是对的,但是如果你想提交onload并在第二次提交时处理提交,你可以使用一个标志变量并提交。

$('#myform').submit();
submitEnabled = true;

here jsFiddle已更新。