欧芹:classHandler 未执行?
Parsley: classHandler not executed?
我正在尝试让 Parsley 和 Bootstrap 根据 Victor 的 ideas 一起玩。但是 Parsley 将其错误消息显示在输入下方,而不是在工具提示中,正如 Victor 的代码试图实现的那样。所以我修改了 "classHandler"-fn 并添加了 console.output 以查看它是否完全执行 - 但我没有得到任何输出。
HTML:
<form id="regform" class="form-horizontal" method="post">
<div class="form-group"><label class="control-label col-lg-3" for="name_k">Schüler <i class="fa fa-user fa-fw"></i></label>
<div class="col-lg-9"><input id="name_k" name="name_k" placeholder="Vor- und Nachname des Kindes (z.B: "Karl Musterkind")" type="text" class="form-control col-lg-9" data-parsley-required="true" data-error-message="Bitte geben Sie Vor- und Nachname des Kindes an!" >
</div>
</div>
<input type="Submit" class="btn btn-primary" value="Absenden">
</form>
JS:
$(document).ready(function() {
var parsleyOptions = {
// Sets success and error class to Bootstrap class names
successClass: 'has-success',
errorClass: 'has-error',
// Bootstrap needs success/error class to be set on parent element
errors: {
classHandler: function(el) {
console.log("Error-handler!");
// return el.$element.closest(".form-group");
return el.parent();
},
// Set these to empty to make sure the default Parsley elements are not rendered
errorsWrapper: '',
errorElem: ''
},
listeners: {
// Show a tooltip when a validation error occurs
onFieldError: function (elem, constraints, parsleyField) {
elem.tooltip({
animation: false,
container: 'body',
placement: 'top',
title: elem.data('error-message')
});
},
// Hide validation tooltip if field is validated
onFieldSuccess: function(elem, constraints, parsleyField) {
elem.tooltip('destroy');
}
}
};
$('#regform').parsley(parsleyOptions);
});
我还整理了一个 fiddle,但不幸的是,它在发帖时出现了 CSRF 问题,所以我不确定这是否有任何帮助。
由于 Victor 的文章已有 2 年历史,也许它指的是欧芹 1.x?不幸的是,我 "getting" 的文档不足以验证这个想法,仍然提到了 classHandlers 等等,而且我没有足够的 Parsley 经验来 "see" 那...
在另一个 enter link description here 中,我找到了这段代码(我为 Parsley 2.1 修改过):
$.listen('field:error', function (fieldInstance) {
arrErrorMsg = ParsleyUI.getErrorsMessages(fieldInstance);
errorMsg = arrErrorMsg.join(';');
fieldInstance.$element
.popover('destroy')
.popover({
container: 'body',
placement: 'right',
content: errorMsg
})
.popover('show');
});
$.listen('field:success', function (fieldInstance) {
fieldInstance.$element.popover('destroy');
});
但这给了我一个关于 pubsub-stuff 被弃用的警告 - 我将为那个打开一个新的 q。
我正在尝试让 Parsley 和 Bootstrap 根据 Victor 的 ideas 一起玩。但是 Parsley 将其错误消息显示在输入下方,而不是在工具提示中,正如 Victor 的代码试图实现的那样。所以我修改了 "classHandler"-fn 并添加了 console.output 以查看它是否完全执行 - 但我没有得到任何输出。
HTML:
<form id="regform" class="form-horizontal" method="post">
<div class="form-group"><label class="control-label col-lg-3" for="name_k">Schüler <i class="fa fa-user fa-fw"></i></label>
<div class="col-lg-9"><input id="name_k" name="name_k" placeholder="Vor- und Nachname des Kindes (z.B: "Karl Musterkind")" type="text" class="form-control col-lg-9" data-parsley-required="true" data-error-message="Bitte geben Sie Vor- und Nachname des Kindes an!" >
</div>
</div>
<input type="Submit" class="btn btn-primary" value="Absenden">
</form>
JS:
$(document).ready(function() {
var parsleyOptions = {
// Sets success and error class to Bootstrap class names
successClass: 'has-success',
errorClass: 'has-error',
// Bootstrap needs success/error class to be set on parent element
errors: {
classHandler: function(el) {
console.log("Error-handler!");
// return el.$element.closest(".form-group");
return el.parent();
},
// Set these to empty to make sure the default Parsley elements are not rendered
errorsWrapper: '',
errorElem: ''
},
listeners: {
// Show a tooltip when a validation error occurs
onFieldError: function (elem, constraints, parsleyField) {
elem.tooltip({
animation: false,
container: 'body',
placement: 'top',
title: elem.data('error-message')
});
},
// Hide validation tooltip if field is validated
onFieldSuccess: function(elem, constraints, parsleyField) {
elem.tooltip('destroy');
}
}
};
$('#regform').parsley(parsleyOptions);
});
我还整理了一个 fiddle,但不幸的是,它在发帖时出现了 CSRF 问题,所以我不确定这是否有任何帮助。
由于 Victor 的文章已有 2 年历史,也许它指的是欧芹 1.x?不幸的是,我 "getting" 的文档不足以验证这个想法,仍然提到了 classHandlers 等等,而且我没有足够的 Parsley 经验来 "see" 那...
在另一个 enter link description here 中,我找到了这段代码(我为 Parsley 2.1 修改过):
$.listen('field:error', function (fieldInstance) {
arrErrorMsg = ParsleyUI.getErrorsMessages(fieldInstance);
errorMsg = arrErrorMsg.join(';');
fieldInstance.$element
.popover('destroy')
.popover({
container: 'body',
placement: 'right',
content: errorMsg
})
.popover('show');
});
$.listen('field:success', function (fieldInstance) {
fieldInstance.$element.popover('destroy');
});
但这给了我一个关于 pubsub-stuff 被弃用的警告 - 我将为那个打开一个新的 q。