2011-07-21 89 views

回答

1

做到这一点,最简单的方法是用简单的HTML锚标记<a>,您可以在您的验证控件的ErrorMessage属性,它会显示在你的ValidationSummary控件的HTML。对于例子

<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的结合。您可以在锚标记的onclick属性中包含此jQuery/Javascript代码。

1

我之前用@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; 
     }); 

您可以添加一些额外的jQuery作为@ jdmonty建议平滑滚动。你也可以在你的样式表中使用css伪类':focus'为'active'输入文本框添加样式,像input[type=text]:focus{background-color:red;}这样的类型在聚焦时真的会突出显示。

P.S.我知道这个问题很老,但我今天看到有人提出了一个更优雅的解决方案,所以对于我鞋子里的其他人来说,这里就是了。