在selectedIndexChanged之后的control.focus()

时间:2011-03-07 16:08:54

标签: javascript .net vb.net

在从下拉列表中选择项目后,我需要关注文本框。

我尝试过control.focus()和setfocus()。

我尝试过的最后一件事是使用下面的方法在SelectedIndexChanged方法中使用Set_Focus(dtbEffectiveDate.ClientID)。

Protected Sub Set_Focus(ByVal ControlName As String)
    Dim strScript As String

    strScript = "<script language=javascript> window.setTimeout(""" + ControlName + ".focus();"",0); </script>"
    RegisterStartupScript("focus", strScript)
End Sub

我没有答案,所以任何帮助都会很棒。

4 个答案:

答案 0 :(得分:1)

您应该使用document.getElementById(id)

在javascript中选择控件
 document.getElementById('"+ControlName+"').focus();

类似的东西:

Protected Sub Set_Focus(ByVal ControlName As String)
    Dim strScript As String

    strScript = "<script language=javascript> window.setTimeout(document.getElementById('" + ControlName + "').focus();"",0); </script>"
    RegisterStartupScript("focus", strScript)
End Sub

编辑:我不完全确定用于转义ControlName周围引号的正确VB语法。

答案 1 :(得分:1)

您需要在javascript中使用document.getElementById,然后才能在其上调用focus

尝试类似:

elem = document.getElementById('theCorrectId');
elem.focus();

答案 2 :(得分:0)

还有一个服务器端Control.Focus方法,它会自动呈现相应的JavaScript,以便将焦点放在该控件上。

修改

以下是一个例子:

Protected Sub MyDropDownList_SelectedIndexChanged(...)
    MyTextBox.Focus()
End Sub

答案 3 :(得分:0)

Protected Sub ddlformtype_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Set_Focus(dtbEffectiveDate.ClientID)
End Sub

Protected Sub Set_Focus(ByVal ControlName As String)
    Dim strScript As String

    strScript = "<script language=javascript> var x = document.getElementById('" + ControlName + "');  window.setTimeout(""x.focus()"",0); </script>"
    RegisterStartupScript("focus", strScript)
End Sub