jQuery Validation Plugin无法在Keyup上验证

时间:2013-12-11 21:12:03

标签: javascript jquery asp.net-mvc jquery-validate

我使用jQuery Validation Plugin,我的表单可以如下验证(假设我有2个字段A和B):

有效:
点击了并输入内容然后删除。然后我点击了B 。在这种情况下,会显示验证消息。

它不起作用:
我点击了A并且没有输入任何内容。然后我点击了B.在这种情况下,没有显示与字段A相关的相关验证消息。但我希望它如上所示。

我尝试在validate方法中使用onsubmit,onkeyup和onclick参数,但它没有任何意义。我怎么能提供这个?


剃刀:

jQuery(function () {
    $.validator.setDefaults(
    $("#myform").validate({
        //onsubmit: false, ???
        //onkeyup: true, ???
        //onclick:true, ???
        onkeyup: function(element){this.element(element);},
        rules: {
            'Applicant.Name': "required",
            'Applicant.Surname': "required"
        },
        messages: {
            'Applicant.Name': "Please enter your Name",
            'Applicant.Surname': "Please enter your Surname"
        }
    })
); 

});

1 个答案:

答案 0 :(得分:3)

您的代码:

jQuery(function () {
    $.validator.setDefaults(
        $("#myform").validate({ .... })
    ); 
});

重要提示:您无法将.validate()方法放在.setDefaults()内。这没有任何意义。

  • .validate()方法用于在表单上初始化插件(带选项)。

  • .validator.setDefaults()方法用于设置将应用于页面上所有表单的选项,但是,此方法不会初始化任何内容。

如果您要为#myform设置选项,使用.validate() ...

jQuery(function () {
    $("#myform").validate({
        // options only for #myform
    });
});

如果您要在页面上的所有表单中设置使用选项,请使用.validator.setDefaults()。然后在每个表单上使用.validate() ...

jQuery(function () {

    $.validator.setDefaults({
        // options for all forms on page
    });

    $("#myform").validate({
        // options only for #myform
    });

    $("#myform2").validate({
        // options only for #myform2
    });

});

默认插件操作:

默认情况下,插件不执行任何操作"键入"验证直到之后该字段最初由另一个事件验证。

因此,这是默认onkeyup回调函数的正确修改版本,因此它将提供立即 onkeyup验证。

DEMO:http://jsfiddle.net/QfKk7/

onkeyup: function (element, event) {
    if (event.which === 9 && this.elementValue(element) === "") {
        return;
    } else {
        this.element(element);
    }
}

您的代码:

//onsubmit: false, ???
//onkeyup: true, ???
//onclick:true, ???

这些选项绝不能设置为true

<强>文档

  

onfocusout
类型:布尔值或函数()
  验证模糊上的元素(复选框/单选按钮除外)。如果未输入任何内容,则跳过所有规则,除非该字段为   已被标记为无效。设置为一个功能来自己决定   何时运行验证。 布尔值true不是有效值


  

onkeyup
类型:布尔值或函数()
  验证密钥上的元素。只要该字段未标记为无效,就不会发生任何事情。否则,将在每个密钥上检查所有规则   事件。设置为false以禁用。设置为一个函数来决定   你自己何时运行验证。 布尔值true无效   值


  

onclick
类型:布尔值或函数()
  点击上的复选框和单选按钮。只要该字段未标记为无效,就不会发生任何事情。否则,将在每个密钥上检查所有规则   事件。设置为false以禁用。设置为一个函数来决定   你自己何时运行验证。 布尔值true无效   值


  

onsubmit
类型:布尔值或函数()
  在提交时验证表单。只要该字段未标记为无效,就不会发生任何事情。否则,将在每个密钥上检查所有规则   事件。设置为false以禁用。设置为一个函数来决定   你自己何时运行验证。 布尔值true无效   值