jQuery验证未删除清除内容上的有效标签

jQuery验证未删除清除内容上的有效标签,jquery,jquery-validate,Jquery,Jquery Validate,我喜欢jQuery.validate.js插件,但在我正在处理的新表单上实现它时,我无法在删除输入元素的内容时将有效的类和标签从该元素中删除 我已将onkeyup设置为false,一个success函数用于将有效的类添加到错误标签,该字段是必需的: <script> $(function() { $('#test').validate({ rules: { firstname: 'required' },

我喜欢
jQuery.validate.js
插件,但在我正在处理的新表单上实现它时,我无法在删除
输入
元素的内容时将
有效的
类和
标签
从该元素中删除

我已将
onkeyup
设置为
false
,一个
success
函数用于将
有效的
类添加到错误标签,该字段是
必需的

<script>
$(function() {
    $('#test').validate({
        rules: {
            firstname: 'required'
        },
        messages: {
            firstname: 'Please enter a first name'
        },
        success: function(label) {
            label.addClass('valid').text('Yey!');
        },
        onkeyup: false
    });
});
</script>

<form id="test">
    <label>Name<input type="text" id="firstname" name="firstname" /></label>
    <p><input type="submit" value="Submit" /></p>
</form>

$(函数(){
$(“#测试”)。验证({
规则:{
名字:“必选”
},
信息:{
名字:'请输入名字'
},
成功:功能(标签){
label.addClass('valid').text('Yey!');
},
onkeyup:false
});
});
名称

以下是我想要改变的:

  • 用户在字段中键入值
  • “Yey”标签显示在字段旁边
  • 用户返回并清除该字段
  • “Yey”标签仍然显示
  • 我想更改步骤4,使其不再显示-要么显示
    字段required
    的错误消息,要么完全没有错误也可以(因为其中没有任何错误)

    奇怪的是,如果
    onkeyup
    设置为
    true
    ,我就可以让它正常工作,但我只是不想在输入时检查错误,我认为这对用户来说太重要了

    任何帮助都是非常感谢的,我在其他帖子中找不到任何解决方案-如果我错过了一些东西,很抱歉


    干杯

    为了解决您的问题,我使用了
    errorPlacement
    选项,每次需要放置错误消息时都会触发该选项。每当需要返回错误消息时,它就会覆盖您的“耶!”消息

    (请注意代码是如何放置在此JSFIDLE中的。)

    演示:


    “奇怪的是,如果onkeyup设置为true,我就可以让它工作”

    值得注意的事情:


    onkeyup
    是默认选项之一,设置为
    false
    或完全忽略。将其设置为
    true
    对此插件无效。此
    onkeyup
    选项后面有一个函数,将其设置为
    false
    是禁用此函数的有效方法。但是,决不能将其设置为
    true
    。省略
    onkeyup
    选项只会允许出现默认的
    onkeyup
    行为。

    您的JSFIDLE构造不正确。见:
    $(function () {
        $('#test').validate({
            rules: {
                firstname: 'required'
            },
            messages: {
                firstname: 'Please enter a first name'
            },
            success: function (label) {
                label.addClass('valid').text('Yey!');
            },
            errorPlacement: function (error, element) {
                error.insertAfter(element);
            },
            onkeyup: false
        });
    });