2009-04-08 80 views
2

我不能得到這個工作的CustomValidator。ASP.NET的CustomValidator客戶端

在<頭>:

<script language="javascript" type="text/javascript"> 
    function ValidateFile(sender, args){ 
     alert("Hi"); 

     args.IsValid = document.getElementById("fuFile").value != "" || 
        document.getElementById("c101_c7").value != ""; 
    } 
</script> 

在機身:

<asp:FileUpload ID="fuFile" runat="server" size="70"/> 
<asp:TextBox ID="c101_c7" class="textbox" runat="server"/> 
<asp:CustomValidator ID="vldFile" runat="server" ClientValidationFunction="ValidateFile" 
    ErrorMessage="You must either upload a file or provide a URL of a file."></asp:CustomValidator> 

應在args.IsValid如果任一文件上傳或文本框在被填充?

回答

0

這工作

document.getElementById("ctl00_ContentPlaceHolder1_fuFile").value 
2

你只是使用正常的按鈕來觸發驗證?

你實現validationgroups別處在這個代碼?

+0

哦,謝謝!我沒有注意到的按鈕有一個驗證組。 但我想我仍然有這個部分錯了。你知道這樣做的正確方法嗎? args.IsValid = document.getElementById(「fuFile」)。value!=「」|| document.getElementById(「c101_c7」)。value!=「」; – Aximili 2009-04-08 03:43:02

0

您需要設置ControlToValidate屬性上自定義驗證。目前,驗證器掛接到任何控制。

此外,我相信你只是沒有發佈這部分標記,但你需要有一個控制,做回發並導致驗證作爲其回傳的一部分。一個按鈕將爲此工作。

5

我發現它有助於居然讓後面的代碼告訴你的JavaScript代碼控制的客戶端ID是什麼,因爲這是可能的,它比你會怎麼想不同(基於什麼ASP .NET決定做):

document.getElementById('<%=fuFile.ClientID %>'); 
3
<script type="text/javascript"> 
//<![CDATA[ 
    function validateField(sender, args) {   
     var regExp = /(^[a-zA-Z]{2,50})$/; 
     var val = document.getElementById(sender.controltovalidate).value; 
     args.IsValid = regExp.test(val); 
} 
//]]> 
</script>