我有一个很长的表格供我的用户填写。有没有办法将 ValidationSummary 中的错误消息超链接到特定的文本字段?
2 回答
最简单的方法是使用简单的 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" />
一种更优雅的方法是将上述方法与 jQuery 结合使用该scrollTo
函数并可能突出显示该字段。onclick
您可以在锚标记的属性中包含此 jQuery/Javascript 代码。
我之前以 @jdmonty 建议的相同方式实现了这一点 - 通过将锚标签添加到每个 RFV 的 ErrorMessage 属性。最后我发现这太乏味了,所以我鼓起了一些 jQuery 来为我做这项工作。此代码段会将您的验证消息包装在带有 的锚标记中href=#targetControl
,当单击时,它当然会滚动到目标输入。
将此添加到 $(document).ready(); 脚本代码的一部分。
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;
});
您可以按照@jdmonty 的建议添加一些额外的 jQuery 来平滑滚动。您还可以在样式表中使用 css 伪类 ':focus' 为“活动”输入文本框添加样式,就像input[type=text]:focus{background-color:red;}
在它们被聚焦时真正强调它们一样。
PS我知道这个问题很老,但我今天才发现它,同时看看是否有人提出了一个更优雅的解决方案,所以对于我鞋子里的其他人,来吧。