我已经继承了一些代码,它使用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