2010-10-25 52 views
0

我使用ASP.NET中的CustomValidator如下:javascript window.event未來?

<asp:CustomValidator ID="cvComment" ControlToValidate="txtComment" Display="None" 
     EnableClientScript="true" ClientValidationFunction="validateComment" 
    runat="server" ></asp:CustomValidator> 

而且這是被調用的函數:

function validateComment(source, args) { 
      var reComment = new RegExp("^[a-zA-Z0-9',!;[email protected]#%*.\s]{1,1000}$"); 
      var validComment = reComment.test(window.event.srcElement.value); 
      if (!validComment) 
       alert("The comment has illegal characters"); 
      args.IsValid = validComment; 
     } 

一旦點擊觸發驗證程序,該應用程序中斷和按鈕我可以看到window.event屬性爲空,所以顯然有一個空引用試圖匹配regEx。我的問題是爲什麼window.event可以顯示爲空?我可以發誓這是以前工作。

編輯:

我已經修改了功能,例如:

var check = document.getElementById(source.id); 
    var checky = check.attributes["controltovalidate"].value; 
    var checkyo = document.getElementById(checky); 
    var validHour = reOutHour.test(checkyo.value); 
    if (!validHour) 
     alert("The time is incorrectly formatted"); 
    args.IsValid = validHour; 

現在這個工作在Internet Explorer,但不能在Firefox ...

+2

您正在測試哪個瀏覽器? 'window.event'是IE專有的東西。在其他瀏覽器中,事件對象作爲處理函數的第一個參數傳遞。 – 2010-10-25 15:16:22

+0

IE和Firefox – 2010-10-25 15:21:32

+0

我該如何修改以支持這兩種瀏覽器? – 2010-10-25 15:25:53

回答

2

這是我如何設法解決我的問題:

var check = document.getElementById(source.id); 
    var checky = check.controltovalidate; 
    var checkyo = document.getElementById(checky); 
    var validHour = reOutHour.test(checkyo.value); 
    if (!validHour) 
     alert("The time is incorrectly formatted"); 
    args.IsValid = validHour; 
+0

非常感謝,它幫助了我。 – 2012-01-01 00:40:53

相關問題