jQuery验证插件-显示最小长度“;“要去的字符”;在错误消息中

jQuery验证插件-显示最小长度“;“要去的字符”;在错误消息中,jquery,jquery-validate,validation,Jquery,Jquery Validate,Validation,我正在使用验证我网站上的表单。我想更改默认的minlength消息,以显示字段中仍然需要的字符数,并使该数字随着用户在input字段中的键入而更改 例如,如果minlength规则为15个字符,且字段中有2个字符,则错误消息将显示为“请再输入至少13个字符。” 为了简单起见,这里是我的jQuery下面的所有代码放在一起时都无法正常工作,因此我需要一个可行的解决方案 这是小提琴: 这是我的密码: $('#contactForm').validate({ rules: { c

我正在使用验证我网站上的表单。我想更改默认的
minlength
消息,以显示字段中仍然需要的字符数,并使该数字随着用户在
input
字段中的键入而更改

例如,如果
minlength
规则为15个字符,且字段中有2个字符,则错误消息将显示为
“请再输入至少13个字符。”

为了简单起见,这里是我的jQuery下面的所有代码放在一起时都无法正常工作,因此我需要一个可行的解决方案

这是小提琴:

这是我的密码:

$('#contactForm').validate({
    rules: {
        contactName: {
            minlength: 15
        }
    }
});
我想添加一些代码,这些代码执行以下操作:

var numOfCharactersToGo = 15 - parseInt($('contactName').val().length);
理论上,我可以更改
minlength
的默认jQuery消息,如下所示:

jQuery.extend(jQuery.validator.messages, {
    minlength: jQuery.validator.format('Please enter at least ' + numOfCharactersToGo + ' more characters.')
});

在表单上初始化插件后,如果不使用内置方法进行此类更改,则无法动态更改
规则
消息

我只知道一种方法,可以在初始化之后动态地覆盖任何规则和消息。这是我的错

您需要在
keyup
事件处理程序函数或任何用于动态计数字符的函数中调用上述函数。演示很粗糙,有一些问题需要克服,但它表明这是可能的


非常粗糙的演示:

感谢@Sparky的回答将我引向了正确的方向,这里是最后的答案,以防其他人想要相同的功能

这是小提琴:

HTML

<form id="myform">
    <input type="text" name="field1" id="field1" />
    <br/>
    <input type="submit" />
</form>

那么问题/问题是什么呢?我上面所做的不起作用。你介意为你的代码快速创建一个JSFIDLE吗?在问题中添加了FIDLE。这似乎起作用-我将它添加到这个FIDLE中:但是当它达到8个字符时,出于某种原因它消失了?想法?@AdamD,就像我说的,它有一些问题。该方法从未打算用于此目的。但在这种情况下,这似乎是我的逻辑/数学。。。就像从当前规则中减去剩余长度一样。它总是在中途失败。@AdamD,我在方法上面声明了它。我看到了。哎呀。。。那就没有办法让它像我想的那样工作了?我觉得这样很好close@AdamD,想想看。。。我们正在改变规则本身。。。当计数器达到8时,字段中已经有8个字符,并且满足规则。我尝试使用相同的方法更改
消息
,而不是规则,但根本不起作用。
<form id="myform">
    <input type="text" name="field1" id="field1" />
    <br/>
    <input type="submit" />
</form>
$(document).ready(function () {
var minChar = 15;
    $('#myform').validate({ // initialize the plugin
        rules: {
            field1: {
                required: true,
                minlength: minChar
            }
        },
        messages: {
            field1: {
                minlength: function () {
                    return [
                        (minChar - parseInt($('#field1').val().length)) +
                        ' more characters to go.'];

                }
            }
        }
    });
});