我有一个很长的表单供我的用户填写。有没有办法将ValidationSummary中的错误消息超链接到特定的文本字段?
答案 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。我知道这个问题已经过时了但是我今天才发现这个问题,看看是否有人提出了更优雅的解决方案,所以对于我的鞋子里的其他任何人来说,你都去了。