2008-08-04 165 views
24

我在.Net 2.0网站上的用户控件中的JavaScript中有一个自定义验证函数,该函数用于检查支付的费用是否超过应付费用。ASP.Net自定义客​​户端验证

我已经将验证器代码放入了ascx文件中,并且我也尝试过使用Page.ClientScript.RegisterClientScriptBlock(),并且在两种情况下验证都会触发,但无法找到JavaScript函数。

Firefox错误控制台中的输出是“feeAmountCheck未定义”。下面是函数(这是直接从firefox-采取>查看源代码)

<script type="text/javascript"> 
    function feeAmountCheck(source, arguments) 
    { 
     var amountDue = document.getElementById('ctl00_footerContentHolder_Fees1_FeeDue'); 
     var amountPaid = document.getElementById('ctl00_footerContentHolder_Fees1_FeePaid'); 

     if (amountDue.value > 0 && amountDue >= amountPaid) 
     { 
      arguments.IsValid = true; 
     } 
     else 
     { 
      arguments.IsValid = false; 
     } 

     return arguments; 
    } 
</script> 

任何想法,为什么功能不被发现?我可以如何补救这一点,而不必将功能添加到我的母版页或使用页面?

回答

13

尝试改变参数名称senderargs。并且,在您使用之后,无论使用AJAX如何,都可以将呼叫切换到ScriptManager.RegisterClientScriptBlock

7

当你正在使用的.Net 2.0和Ajax - 你应该使用:

ScriptManager.RegisterClientScriptBlock 

它将在阿贾克斯的环境中更好地工作,然后将旧版本Page.ClientScript

0

尽管我仍然想回答为什么我的javascript没有被识别,但我在此期间找到的解决方案(应该首先完成)是使用Asp:CompareValidator而不是Asp:CustomValidator。你

0

还可以使用:

var amountDue = document.getElementById('<%=YourControlName.ClientID%>'); 

,将自动解决该元素的客户端ID,您无需弄清楚,这就是所谓的'ctl00_footerContentHolder_Fees1_FeeDue'