jQuery验证在清除内容时不删除有效标签

时间:2013-01-23 13:23:04

标签: jquery jquery-validate

我喜欢jQuery.validate.js插件,但是在我正在处理的新表单上实现它时,我无法获得valid classlabel删除内容时,请从input元素中删除。

我将onkeyup设置为falsesuccess函数将valid类添加到错误标签,字段为required

<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>

http://jsfiddle.net/kw8Lm/

以下是我想改变的情况:

  1. 用户在字段中键入值
  2. 'Yey'标签显示在字段旁边
  3. 用户返回并清除字段
  4. 'Yey'标签仍然显示
  5. 我希望更改第4步以便不再显示 - 要么显示Field required的错误消息,要么根本没有错误(因为它没有任何内容)。< / p>

    奇怪的是,如果将onkeyup设置为true,我可以使用该功能,但我只是不希望在输入时进行错误检查功能,对我认为的用户来说有点太多了。

    非常感谢任何帮助,我在其他帖子中找不到任何解决方案 - 抱歉,如果我错过了什么。

    干杯!

1 个答案:

答案 0 :(得分:0)

为了解决您的问题,我使用了errorPlacement选项,每次需要输入错误消息时都会触发该选项。它超越了你的#Yay!&#34;每当错误消息需要返回时都会显示消息。

(请注意代码如何放在这个jsFiddle中。)

演示:http://jsfiddle.net/vwH2x/

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

  

&#34;奇怪的是,如果将onkeyup设置为true,我可以使用该功能&#34;

值得注意的事情:

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