在对这个问题进行了广泛的搜索之后,我一直无法自己找到一个问题的答案,因为我遇到的一个问题是,jQuery验证插件正在蚕食我用于通过PHP发送短信的表单的一个字符计数插件。
如果您在前端进入表单,并开始在文本区域中键入,计数器将正常工作,当然验证不会触发,因为元素中有文本……但是,出于测试的目的,如果您尝试在没有消息的情况下提交表单,则会触发验证,并显示与textarea相关的错误消息;当您输入副本时,验证消息会消失,但字符计数器不再起作用。
下面是我使用的字符计数器:http://cssglobe.com/jquery-plugin-simplest-twitterlike-dynamic-character-count-for-textareas/
下面是我的脚本布局:
$(function(){
//irrelevant functions have been omitted
$("#smsMessage").charCount({
allowed:110,
warning:10,
});
$('form').validate();
});我甚至尝试重新触发计数器函数,作为验证的回调,但这只会导致在textarea旁边放置一个重复的、非功能性的计数器。
$(function(){
//irrelevant functions have been omitted
$("#smsMessage").charCount({
allowed:110,
warning:10,
});
$('form').validate({
invalidHandler: function(form, validator) {
var errors = validator.numberOfInvalids();
if (errors) {
$("#smsMessage").charCount({
allowed:110,
warning:10,
});
}
}
});
});诚然,这是我一段时间以来的第一个单独的webDev项目--它是为我的未婚妻和我的婚礼网站准备的,所以我正在试着把它升级一点。如果有任何方法可以让计数器和验证很好地结合在一起,那就太好了。如果不是,这并不是世界末日,但它仍然不是理想的。
发布于 2012-10-13 04:56:09
问题是你的计数器插件在跟踪计数器的位置上并不是很聪明。它通过将计数器放在文本区之后来创建计数器。验证插件对它的错误消息做同样的事情。最简单的修复方法是告诉验证插件将错误放在其他地方。试试这个:
$('form').validate({
errorPlacement: function(error,element){
if (element.attr('id') == 'smsMessage'){
error.insertAfter(element.next());
} else {
error.insertAfter(element);
}
}
});我制作了一个工作示例,以便您可以试用它:http://jsfiddle.net/ryleyb/6HKuq/
https://stackoverflow.com/questions/12865886
复制相似问题