2013-03-06 28 views
0

我有一個asp.net webform幾個面板,每個面板都有幾個文本框。我目前隱藏或顯示面板使用jQuery基於DropDownList中的哪個項目被選中。只有在父元素可見時才啓用RequiredFieldValidator?

我已經運行到哪裏所需的字段校驗仍然射擊甚至當它連接到的元素沒有展示,因爲它的父面板的問題已display: none

有沒有什麼辦法來禁用RequiredFieldValidator當它所連接的元素由於CSS沒有顯示?

我知道如果在服務器端設置Visible = false,元素根本不會渲染,但我寧願爲了用戶體驗的原因在客戶端保留顯示/隱藏邏輯。

+1

您將不得不使用自定義驗證器來實現此功能。 – 2013-03-06 17:40:13

+0

我會輸入您的評論作爲答案本;我同意沒有辦法去做安倍想要的自定義驗證器 – Melanie 2013-03-06 17:42:13

回答

2

我同意自定義驗證器是最好的,但如果您確實需要在客戶端執行此操作,則可以使用ValidatorEnable函數。

ValidatorEnable(document.getElementById("<%= RequiredFieldValidator.ClientID %>"), false); 

(請注意,我從來沒有真正嘗試過這個自己,但我聽說它成功地被用來在客戶端上禁用驗證的。)

1

由於this thread says,您可以使用該功能。因此修改您的方法如下

function cbSearchOption_SelectedIndexChanged(sender, args) { 
    var x = document.getElementById('cbSearchOption').value 
    if (x == 'Date') 
    { 
     ValidatorEnable($get(‘<%=DateValidator1.ClientID %>’), true); 
     document.getElementById('test').style.visibility = 'visible'; 
    } 
    else 
    { 
     ValidatorEnable($get(‘<%=DateValidator1.ClientID %>’), false); 
     document.getElementById('test').style.visibility = 'hidden'; 
    } 
} 
相關問題