FormValidation.io 无法在 UpdatePanel 中工作?
FormValidation.io won't work within 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'
}
}
},
...
}
}); } });
我也尝试以声明方式进行验证,结果相同。我也试过在回发后使用控制台重新初始化验证,但没有成功。
我有点沮丧b/c我已经尝试了我所知道的一切。谢谢!
我也遇到了同样的问题。如您所见,验证最初可以工作,但在回发后,它就停止工作了。我尝试使用 javascript pageLoad() 函数,该函数在回发完成后由 asp 框架调用。
我发现在每次回发之后将 formValidation 设置为 null 似乎可以解决问题。请参阅下面的代码。我从 asp 提交按钮调用 isFormValid() 函数。
<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({....
我正在使用 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'
}
}
},
...
}
}); } });
我也尝试以声明方式进行验证,结果相同。我也试过在回发后使用控制台重新初始化验证,但没有成功。
我有点沮丧b/c我已经尝试了我所知道的一切。谢谢!
我也遇到了同样的问题。如您所见,验证最初可以工作,但在回发后,它就停止工作了。我尝试使用 javascript pageLoad() 函数,该函数在回发完成后由 asp 框架调用。
我发现在每次回发之后将 formValidation 设置为 null 似乎可以解决问题。请参阅下面的代码。我从 asp 提交按钮调用 isFormValid() 函数。
<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({....