如何在回发之前在客户端上调用RequiredFieldValidator

si6*_*618 6 asp.net validation

我继承了一些使用div将页面分成标签的代码.在第一页上有许多必需的字段和正则表达式验证器.问题是用户可以切换到另一个选项卡,触发回发并使第一页上的验证器失败,使事情陷入混乱.

我希望能够做的是在用户选择另一个选项卡时在第一页上执行验证,从而防止它们移动到新选项卡,直到第一页有效.

<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>
Run Code Online (Sandbox Code Playgroud)

哪里isValid需要关闭验证器.

谢谢!

更新: 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();
}
Run Code Online (Sandbox Code Playgroud)

注意使用jQuery实现与click事件的跨浏览器兼容性.这只有在其他选项卡上没有验证器的情况下才有效,根据Thomas的回答,isValid如果有任何补充,我需要使用验证组和额外的逻辑.

Dea*_*ing 2

ASP.NET 创建一个全局 JavaScript 函数Page_ClientValidate,您可以调用该函数来触发验证器:

function isValid() {
    return Page_ClientValidate();
}
Run Code Online (Sandbox Code Playgroud)