[英]Parsley Form Validation - Event Listeners
Ok, so i have searched everywhere for this but still can't get it working. 好的,所以我到处寻找这个,但仍然无法使它工作。 No one seems to have tried it but i'm sure it can do it. 似乎没有人尝试过,但我确信它可以做到。
I want to use the Parsley validation plugin with my twitter bootstrap project. 我想在我的twitter bootstrap项目中使用Parsley验证插件。 I have read the docs, but am still learning JQuery so it's going right over my head (i'm rationalising that it is too advanced for me at the moment). 我已经阅读了文档,但我仍然在学习JQuery,所以它正好在我的头上(我现在理解它对我来说太先进了)。
I want to add a custom event listener to Parsley to show a popup on error instead of the ugly li's. 我想向Parsley添加一个自定义事件监听器,以显示错误弹出窗口而不是丑陋的li。 This is what i have tried: 这是我尝试过的:
JQUERY JQUERY
$(document).ready(function () {
$('.parsley').parsley({
successClass: 'success',
errorClass: 'error',
errors: {
classHandler: function(el) {
return $(el).closest('.form-control');
},
errorsWrapper: '<div class=\"popover fade top in\" style=\"top: -20px\"></div>',
errorElem: '<div></div>'
}
});
$('.test').parsley({
successClass: 'success',
errorClass: 'error',
errors: {
classHandler: function(el) {
return $(el).closest('.form-control');
},
errorElem: '<div></div>'
},
onFieldValidate: function ( elem ) {
// if field is not visible, do nothing.
if ( !$( elem ).is( ':visible' ) ) {
$(elem).popover({
placement : 'top',
title : 'Test',
content : '<div id="popOverBox"><h4>Test</h4></div>'
});
$(elem).popover('show');
return true;
} else {
$(elem).popover('hide');
return false;
}
}
});
});
The top function half works (only displays a bubble) was only a hack to get it working temporarily. 顶部功能一半工作(只显示一个气泡)只是一个让它暂时工作的黑客。
HTML HTML
<head>
<script src="../assets/js/jquery.js"></script>
<script src="../assets/js/bootstrap.js"></script>
<script src="../assets/js/bootstrap-tooltip.js"></script>
<script src="../assets/js/bootstrap-popover.js"></script>
<script src="../assets/lib/parsley/parsley.min.js"></script>
</head>
<form class="test" data-validate="parsley" novalidate>
<input type="text" name="test" value="test" data-required="true" data-trigger="keyup change">
</form>
Can anyone help me get this working? 任何人都可以帮我搞定这个吗? Note: I would prefer the bootstrap tooltip (as opposed to popover) but would be grateful if someone could help me with either. 注意:我更喜欢bootstrap工具提示(而不是popover),但如果有人可以帮助我,我将不胜感激。
You are doing what you shouldn't do. 你正在做你不应该做的事情。 Looking at the Parsley docs one can see warning like this: 看看欧芹文档,可以看到这样的警告:
you must remove data-validate="parsley" auto-binding code in your forms DOM to allow you to override the default processing and use Parsley purely from javascript. 您必须删除表单DOM中的data-validate =“parsley”自动绑定代码,以允许您覆盖默认处理并纯粹使用来自javascript的Parsley。
After that you can do $('.test').parsley(...)
. 之后你可以做$('.test').parsley(...)
。
Also note that you are hanging listeners incorrectly. 另请注意,您错误地挂了听众。 The right way is to put them inside listenter: {}
property just like this: 正确的方法是把它们放在listenter: {}
属性中,就像这样:
$('.test').parsley({
listeners: {
onFieldValidate: function(elem, ParsleyField) {
console.log("validate", elem);
return false;
},
onFieldError: function(elem, constraints, ParsleyField) {
console.log("error", elem);
}
}
});
您可以使用以下代码简单地检查表单是否经过验证。
$( '#formId' ).parsley( 'isValid' );
I ended up using this in conjunction with bootstrap tooltips, the below snippet adds a title to invalid fields. 我最终将此与bootstrap工具提示结合使用,下面的代码片段为无效字段添加了标题。
parsleyContainer
= Field container, this could be a <form>
tag for example parsleyContainer
=字段容器,例如,它可以是<form>
标记
var parsleyContainer = $(this).closest('.tab-pane');
$(parsleyContainer).attr('data-parsley-validate', 'true');
$(parsleyContainer).parsley({
errorsContainer: function (ParsleyField) {
return ParsleyField.$element.attr("title");
},
errorsWrapper: false,
});
if($(parsleyContainer).parsley().validate()) {
//do something is validated
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.