我正在使用ASP.NET 3.5和jquery.hint.js插件。它工作得很好,有一个小问题。我在页面上有各种ASP.NET验证器,当页面无法验证时,客户端,包含提示文本的所有文本框现在都是空白的。这对最终用户来说很困惑,因为他们没有字段标签。要查看提示文本,他们必须单击进入和退出字段并重新填充。
不确定它是否有所不同,但这些字段包含在ASP.NET AJAX UpdatePanel中。更新面板的原因是为动态字段更新执行一些异步调用,例如根据您选择的国家/地区自动填充状态下拉列表。表格通过回发提交。
在客户端验证失败后,我需要一种方法来针对这些字段调用提示javascript。我怎么能这样做?
以下是针对页面上各个字段执行提示插件的客户端代码示例:
<script type="text/javascript">
$(document).ready(function () {
// Add handler function to UpdatePanel's events
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
PageLoad();
});
function PageLoad() {
RetainState();
}
// This function handles the UpdatePanels' EndRequest event.
function EndRequestHandler(sender, args) {
if (args.get_error() == undefined) {
RetainState();
}
else { // there was an error
alert("There was an error" + args.get_error().message);
}
}
function RetainState() {
// Add hint to textboxes.
$(":text").hint();
$("textarea").hint();
}
</script>
最后一件事:我以为我已经通过将以下代码添加到后面的代码中的Page_Load方法来解决了这个问题,但是如果之前有效,那么现在不是:
// This will call some javascript after a form validation fails
// and keep the hint text in the form fields.
if (!Page.ClientScript.IsOnSubmitStatementRegistered("KeepState"))
{
string script = "RetainState()";
Page.ClientScript.RegisterOnSubmitStatement(Page.GetType(), "KeepState", script);
}
谢谢,
托德