2010-01-28 63 views
0

我在验证aspx页面时遇到问题;我有以下代码:验证失败时更改css类

<td> 
    Id 
</td> 
<td> 
    <asp:TextBox ID="txtId" runat="server"></asp:TextBox> 
</td> 
<td> 
    <asp:RequiredFieldValidator ID="reqId" runat="server" ErrorMessage="Error" ControlToValidate="txtId" SetFocusOnError="true"></asp:RequiredFieldValidator> 
    </td> 

而且下面的JavaScript代码:

<script type="text/javascript"> 
    function ValidateData() { 
     var v1 = "#<%= txtId.ClientID %>"; 
     var val = Page_ClientValidate(); 
     if (!val) { 
      var i = 0; 
      for (; i < Page_Validators.length; i++) { 
       if (!Page_Validators[i].isvalid) { 
        $("#" + Page_Validators[i].controltovalidate) 
        .css("background-color", "red"); 
       } 
      } 
     } 
     return val; 
    } 
</script> 

这段代码我从这篇文章中提取: Change textbox’s css class when ASP.NET Validation fails

的问题是,我遇到了错误:

Object Expected 

关于以下行:

$("#" + Page_Validators[i].controltovalidate) 

如此,属性的ControlToValidate不存在时,我调试代码(在Internet Explorer 7)。

我希望你能帮助我解决这个问题,我不知道如何得到那个财产或我错过了什么。

在此先感谢。

哦,我忘了,这是我的按钮的代码:

<asp:Button ID="btnSend" runat="server" Text="Send" 
          OnClientClick="return ValidateData();" 
          onclick="btnSend_Click" /> 
+0

你有没有在你的脑袋标签jQuery的参考? '$().css()'语法是jQuery。 – Fermin 2010-01-28 12:02:20

回答

0

controltovalidate应该要验证控件的ID所代替。

所以行应该是这样的:

$("#" + Page_Validators[i].txtId) 
+0

你是对的;问题是该页面没有找到jquery的参考,谢谢。 – lidermin 2010-01-28 12:16:17