0

我知道这真的很基本,但我正在尝试获取一个表单元素来验证 onblur 或在打字时。我很难让事情正常运行。

$('document').ready(function(){
    $('form').validate({
       rules: {
                a: {
                    onkeyup:true,
                    required:true,
                    minlength:2
                   }
        },      
        messages: {
                a: {
                    required: "enter your name!"
                   }       
        }  

    }); 
 });

我可以让这件事部分工作......但我必须在输入内容后点击进出输入。为什么是这样?然后我添加了这个

    $('#a').blur(function(){
        $("form").validate().element("#a");
    });

它适用于模糊,但是当我返回并输入有效条目时,错误消息不会消失。这是html:

<div>
<form action="#">
    <input type="text" name="a" id="a">
</form>
</div>

这是小提琴:

http://jsfiddle.net/mmw562/S7AKK/16/

http://jsfiddle.net/mmw562/S7AKK/17/

有人可以解释发生了什么吗?我当然感谢您的帮助,即使我知道这是非常基本的东西....

4

1 回答 1

2

根据文档onkeyup:是一个.validate()选项,而不是字段验证规则。您必须相应地放置它...

$('document').ready(function(){
    $('form').validate({

    // "onkeyup" is the default behavior, leave it out unless disabling
    // onkeyup: false,  

       rules: {
            a: {
                required:true,
                minlength:2
            }
        },      
        messages: {
            a: {
                required: "enter your name!"
            }       
        }  

    }); 
});

编辑:

onkeyup:是默认行为,因此只需将其保留为默认行为。将其设置true为不仅是多余的,而且实际上会破坏其预期功能。

如果您需要禁用它,请将其设置为false

onkeyup: false

如果您需要更改 的默认行为onkeyup,请使用以下函数:

onkeyup: function(element, event) {
   // your custom onkeyup functionality
}

仅供参考,这是默认onkeyup:函数的操作方式:

onkeyup: function(element, event) {
    if ( event.which === 9 && this.elementValue(element) === '' ) {
        return;
    } else if ( element.name in this.submitted || element === this.lastActive ) {
        this.element(element);
    }
}
于 2012-11-23T03:41:54.703 回答