我已經繼承了一些代碼,它使用div將頁面分成多個標籤。在第一頁上有許多必需的字段和正則表達式驗證器。問題是用戶可以切換到另一個選項卡,觸發回發並使第一頁上的驗證器失敗,從而導致混亂。如何在回發之前在客戶端上調用RequiredFieldValidator
我想要做的是在用戶選擇另一個選項卡時在第一頁上執行驗證,從而防止它們移到新選項卡,直到第一頁有效。
<ul>
<li><a href="#tab1">Tab 1</a> </li>
<li><a href="#tab2" onclick="return isValid();">Tab 2</a></li>
<li><a href="#tab3" onclick="return isValid();">Tab 3</a></li>
</ul>
其中isValid
需要啓動驗證器。
謝謝!
UPDATE:由codeka提供的答案是非常接近,但是,因爲我需要同時提供href和的onclick屬性(以避免搞亂顯示),標籤(錨)開關仍然發生,即使驗證失敗。這是我解決這個問題的方法。免責聲明:難看的代碼提前
<ul>
<li><a id="tab1Tab" href="#tab1" style="display:none"/><a onclick="isValid('tab1');">Tab 1</a></li>
<li><a id="tab2Tab" href="#tab2" style="display:none"/><a onclick="isValid('tab2');">Tab 2</a></li>
<li><a id="tab3Tab" href="#tab3" style="display:none"/><a onclick="isValid('tab3');">Tab 3</a></li>
</ul>
function isValid(tab) {
var valid = Page_ClientValidate();
var tabId = (valid ? tab : "tab1") + "Tab";
$("#" + tabId).click();
}
請注意使用jQuery的跨瀏覽器兼容性與點擊事件。這隻適用於其他選項卡上沒有驗證器的情況,根據Thomas的回答,如果有任何添加,我需要在isValid
中使用驗證組和額外的邏輯。
+1謝謝,只要在其他選項卡上沒有其他驗證程序,就應該可以工作,我最好現在檢查:) – si618 2010-03-22 00:34:22
您也可以傳遞要驗證的驗證組,例如:Page_ClientValidate( 「Registration」);' – 2010-03-22 00:40:24
這非常接近,驗證器正在點擊onclick,但即使返回「false」,錨仍然被移動到另一個標籤。 – si618 2010-03-22 00:58:39