将超链接添加到ValidationSummary

时间:2011-07-21 15:03:20

标签: c# focus validationsummary

我有一个很长的表单供我的用户填写。有没有办法将ValidationSummary中的错误消息超链接到特定的文本字段?

2 个答案:

答案 0 :(得分:1)

最简单的方法是使用简单的HTML锚标记<a>,您可以将HTML包含在验证控件的ErrorMessage属性中,该属性将显示在ValidationSummary控件中。例如

<asp:ValidationSummary ID="ValidationSummary1" runat="server" />
<asp:Button ID="Button5" runat="server" Text="Submit" />
<br />
<div style="height:800px"></div>
<a name="TextBox1"></a>
Required Field
<asp:TextBox ID="TextBox1" runat="server" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
    ErrorMessage="Required Field is Required <a href='#TextBox1'>Click Here To Go To</a>" 
    Text="***" 
    ControlToValidate="TextBox1" />

更优雅的方法是使用scrollTo函数将上述方法与jQuery结合使用,并可能突出显示该字段。您可以将此jQuery / Javascript代码包含在锚标记的onclick属性中。

答案 1 :(得分:1)

我之前以@jdmonty建议的方式实现了这一点 - 通过将锚标记添加到每个RFV的ErrorMessage属性。最终我发现这太乏味了所以我打了一些jQuery来为我做这项工作。此代码段将使用let m = someArray.map(function(n){ if(n===0) return n+1; } 将验证消息包装在锚标记中,当然,单击时会滚动到目标输入。

将此添加到$(document).ready();部分脚本代码。

href=#targetControl

您可以添加一些额外的jQuery作为@jdmonty建议来平滑滚动。您还可以在样式表中使用css伪类':focus'来为“活动”输入文本框添加样式,例如 var validators = Page_Validators; // returns collection of validators on page $(validators).each(function () { //get target control and current error validation message from each validator var errorMsg = $(this).context.errormessage; var targetControl = $(this).context.controltovalidate; var errorMsgWithLink = "<a href='#" + targetControl + "'> " + errorMsg + "</a>"; //update error message with anchor tag $(this).context.errormessage = errorMsgWithLink; }); ,以便在它们聚焦时真正突出显示。

P.S。我知道这个问题已经过时了但是我今天才发现这个问题,看看是否有人提出了更优雅的解决方案,所以对于我的鞋子里的其他任何人来说,你都去了。