2
在ASP.NET a RequiredFieldValidator
中仍然驗證了文本框控件,即使我在客戶端禁用它。我想通過使用CustomValidator
擺脫此行爲。在驗證功能中,我檢查是否啓用了文本框。如果是這種情況,我將驗證器設置爲有效。客戶端禁用的文本框仍在服務器端啓用
function ValidateTextBox(sender, args) {
var $textbox = $('#txtFoo')
args.isValid = $textbox.prop('disabled') || $textbox.val();
}
這在客戶端很好地工作。問題是,我使用JavaScript更改了客戶端上的文本框的狀態。因此,服務器不知道更改的狀態(即現在禁用了文本框控件)。因此,當引發自定義驗證程序的事件(例如通過調用Page.Validate
)時,我無法檢查文本框是否已禁用。因爲服務器不知道這個,所以無論我在客戶端做什麼,Enabled
屬性總是設置爲true。
如何在禁用時禁用對控件的驗證,或在Postback
期間告訴服務器文本框的狀態?
謝謝你的時間。
可以將服務器從其他控件的狀態告訴(文本框或休息時間的頁面)文本框是否會在客戶端被禁用?驗證最安全的方法就是複製當前客戶端的邏輯,因爲無論如何,所有客戶端腳本和表單值都可以通過常用的調試工具進行更改。 –
這肯定會起作用。我正在使用用戶控件將標籤輸入字段和驗證程序組合到一個控件中。如果控件可以自動處理它,而不必依賴它所使用的頁面代碼,那將會很好。我的意思是這是ASP.NET驗證控件的優點。您不必手動檢查每個控件的狀態。你只需要調用Page.Validate,一切都很好。 – chrinetr
當使用JavaScript更改文本框的值時,服務器知道該值,因爲它的值將被髮送回服務器。是否可以使用此機制將文本框的禁用狀態與其值一起發送? – chrinetr