0

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

$.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
            }
        }
    });
  });

查看我的 Fiddle:jsFiddle 复选框验证示例

如您所见,我有一个问题。

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

有什么想法可以解决这个问题吗?

4

3 回答 3

1

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

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

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

于 2013-09-02T14:58:20.290 回答
1

你的代码:

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

您的代码存在一个主要问题: 这个名为的插件没有此类选项keyupkeypressclickchange 它们被称为onkeyup, onfocusout, onclick, 并且onsubmit默认情况下它们已经是“真实的”......它们不能在true不破坏插件的情况下设置为。您只能将它们设置false为禁用,或将它们设置为自定义功能。

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

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

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

$(function () {

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

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

});

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

于 2013-09-02T15:00:02.610 回答
-1

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

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

这里更新了 jsFiddle。

于 2013-09-02T15:00:43.397 回答