FormValidation.io не будет работать в UpdatePanel?
Я использую плагин formvalidation.io для выполнения клиентской проверки на моих страницах. Недавно я столкнулся с проблемой, когда я не могу заставить проверку работать после обратной передачи в UpdatePanel (проверенные элементы управления также находятся в UpdatePanel).
Начало UP:
<asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="ActivityType" EventName="SelectedIndexChanged" />
<asp:AsyncPostBackTrigger ControlID="ActivitySubType" EventName="SelectedIndexChanged" />
</Triggers> .... </asp:UpdatePanel>
Проверка работает так, как задумано, пока не произойдет обратная передача. Каждый раз, когда ActivityType или ActivitySubType выполняют обратную передачу, все проверки исчезают.
Javascript / JQuery:
$(function () {
docReady();
});
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function () { docReady(); });
function docReady() {
$("#aspnetForm").formValidation({
message: 'This value is not valid',
feedbackIcons: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
ctl00$maincontent$ActivityDate:
{
validators: {
notEmpty: {
message: 'Date / Time is required'
}
}
},
...
}
}); } });
Я также попытался сделать декларативную проверку с тем же результатом. Я также попытался повторно инициализировать проверку с помощью консоли после обратной передачи, но безуспешно.
Я немного расстроен, потому что я попробовал все, что я знаю, чтобы сделать. Спасибо!
1 ответ
У меня та же проблема. Как вы уже видели, проверка может работать изначально, но после обратной передачи она перестает работать. Я попытался использовать функцию javascript pageLoad(), которая вызывается средой asp после завершения обратной передачи.
Я обнаружил, что установка formValidation в null каждый раз после каждой обратной передачи, кажется, решает проблему. Смотрите мой код ниже. Я вызываю функцию isFormValid() из моей кнопки отправки asp.
<script type="text/javascript">
function isFormValid() {
var formValidation = $('form').data('formValidation');
formValidation.validate();
if (formValidation.isValid() != true) {
return false;
}
return true;
}
// called by Ajax Framework after postback
function pageLoad() {
setupValidation();
}
function setupValidation() {
$('form').data('formValidation',null);
$('form').formValidation({
framework: 'bootstrap',
icon: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
}
})
});
</script>
В вашем случае - попробуйте следующее:
$("#aspnetForm").data('formValidation',null);
$("#aspnetForm").formValidation({....