在从下拉列表中选择项目后,我需要关注文本框。
我尝试过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
我没有答案,所以任何帮助都会很棒。
答案 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