将焦点移至服务器端验证器

时间:2011-10-11 20:48:09

标签: asp.net

我有一个包含多个CustomValidators的页面,我希望在出现错误时将焦点带到有问题的验证器。我知道这可以通过客户端验证,但是它可以与服务器端一起使用吗?

此外,CustomValidators位于页面的不同部分,因此当验证失败时,我不能简单地将页面滚动到一个常规位置。

我试过了:   SetFocusOnError   验证后,按钮单击后立即使用CustomValidator.Focus(),并在Page.PreRender()

提前致谢

1 个答案:

答案 0 :(得分:0)

感谢同事,我有一个解决这个问题的方法。这很简单,我希望我能想到它!只需在验证器失败时注入javascript,并在回发时执行javascript。

Private Sub CustomValidator_ServerValidate(ByVal source as Object, ByVal args as System.Web.UI.WebControls.ServerValidateEventArgs) Handles CustomValidator.ServerValidate
    If someCondition Then
        args.IsValid = True
    Else
        args.IsValid = False
        System.Web.UI.ScriptManager.RegisterStartupScript(Me, Me.GetType(), "JumpToValidator", "jumpToValidator(validatorId);", True)
    End If
End Sub`

其中jumpToValidator(validatorId)是一个javascript函数,它滚动到作为参数传入的元素。