0

我喜欢这个jQuery.validate.js插件,但是在我正在处理的新表单上实现它时,当它的内容被删除时,我无法从元素中删除valid classand 。labelinput

我已onkeyup设置为向错误标签添加类false的函数,该字段为:successvalidrequired

<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. “是”标签显示在字段旁边
  3. 用户返回并清除该字段
  4. “是”标签仍然显示

我希望更改第 4 步,使其不再显示 -Field required应该显示的错误消息或根本没有错误也可以(因为其中没有任何内容)。

onkeyup奇怪的是,如果设置为,我可以让它工作,true但我只是不希望在打字时进行错误检查的功能,这对我认为的用户来说有点多。

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

干杯!

4

1 回答 1

0

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

(请注意代码是如何放置在这个 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
    });
});

“奇怪的是,如果 onkeyup 设置为 true,我可以让事情正常工作”

值得注意的一点:

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

于 2013-01-23T17:32:50.180 回答