2013-06-22 103 views
2

我在客戶端設置customvalidator時遇到問題。 基於特定的隱藏字段值,按鈕的onClientClick事件應激發一個函數,該函數將CustomValidator的isValid屬性設置爲false。如何在客戶端設置自定義驗證器的isValid屬性?

下面是一些代碼: 代碼背後:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (hiddenfieldValue == true) 
    { 
     btnSend.OnClick = "someJavascriptFunction()"; 
    } 
} 

ASPX文件:

function someJavascriptFunction() 
{ 
    if (hiddenfieldValue == true) 
     // Show Validation and dont do postback 
     vldValdiator.isValid = false; 
     return false; //Dont do Postback 
    else 
     return true; Do Postback 
} 

<asp:CustomValidator ID="vldValidator" runat="server" Text = "ABC"/> 

我不能夠將基於隱藏字段的值在客戶端IsValid屬性。 請幫助。提前致謝。

回答

3

方法1

你可以嘗試按鈕的OnClientClick事件中Page_IsValid屬性設置爲false。就asp.net驗證器而言,這會強制頁面進入非驗證狀態。

基本例如

function ButtonOnClickClient() 
{ 
    if ($('#hiddenFieldID').val() == 'someValue') 
    { 
     Page_IsValid = false; 
    } 
} 

老實說 - 我不相信,Page_IsValid財產不會被重置。你會需要嘗試

方法2

,你可以做的CustomValidator客戶端驗證檢查隱藏字段,並驗證通過或在此基礎上驗證失敗。按鈕onclient點擊事件然後可以調用Page_ClientValidate()函數,這將強制頁面上的驗證。這將然後設置正確的驗證屬性。

Basic示例2

function CustomValidatorClientValidate(source, arguments) 
    { 
     if ($('#hiddenFieldID').val() == 'someValue'){ 
      arguments.IsValid = true; 
     } else { 
      arguments.IsValid = false; 
     } 
    } 

function ButtonOnClientClick() 
{ 
    Page_ClientValidate(); 
} 

這用了jQuery - 因爲我覺得它更容易寫一個例子的方式。絕不強制使用它。另外我假設asp.net驗證器API存在。它應該是,如果你已包括這些控件,但你總是可以通過增加檢查函數名

ALSO

如果您使用的是哪個,你可能會確認團組收緊呼叫將成爲

Page_ClientValidate(validationGroupName); 

方法3

你可以試試,大約但設定的CustomValidator的IsValid屬性。這應該讓你更直接地控制你想要的驗證器。以下參考文獻說

isvalid Boolean屬性。這是對每個客戶端驗證 屬性指明它是當前有效

我做過類似的東西前兩個,但我還沒有親自嘗試這一個。

一般

一般您所使用的方法,是在asp.net驗證器使用JavaScript API的直接操作。這不是大規模漂亮,但你可以控制你想要

參考

這給你試圖使用JavaScript API的參考。這是一個冗長的文章,但你想要的位大約是一半,

http://msdn.microsoft.com/en-us/library/Aa479045

好運

我真的需要離開這一點,但你的代碼是錯在這裏 - 它的OnClientClick 。

btnSend.OnClientClick = "someJavascriptFunction()"; 
+0

我想要做,但它不工作。你能否給我提供它的代碼 – SJMan

+0

它關閉我的頭頂,但看到編輯 –

0

使用此命令綁定事件。

btnSend.Attributes.Add("onclick","return someJavascriptFunction();")

相關問題