自定义验证控制:
<asp:CustomValidator
ID="valSex" runat="server" ErrorMessage="1.2 <b>Sex</b> not specified"
EnableClientScript="true" ClientValidationFunction="ValidateSex" SetFocusOnError="True">Selection required</asp:CustomValidator>
客户端验证例程:
function ValidateSex(source, args) {
var optMale = document.getElementById("<%=optMale.ClientID %>");
var optFemale = document.getElementById("<%=optFemale.ClientID %>");
if (!optMale.checked && !optFemale.checked) {
args.IsValid = false;
optMale.focus();
}
else
args.IsValid = true;
}
当提交页面并且未指定Sex时,焦点已设置但是2个单选按钮不在视图中,需要垂直滚动才能将其显示在视图中。
Focus()方法不应该将焦点控制带入视图吗?
答案 0 :(得分:2)
我不认为所有浏览器都必须以这种方式实现它。您可以使用scrollTo(x, y)
将其滚动到视图中。
以下应该可以解决问题:
function scrollToElement(elementId)
var offset = findPos(document.getElementById(elementId));
var x = offset[0];
var y = offset[1];
window.scrollTo(x, y);
}
function findPos(obj) {
var curleft = curtop = 0;
if (obj.offsetParent) {
do {
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
} while (obj = obj.offsetParent);// yes, it's an assignment
}
return [curleft,curtop];
}
更多关于在http://www.quirksmode.org/js/findpos.html找到职位的信息。