我正在使用ASP.NET做一些客户端javascript 我有以下javascript来处理XMLHTTPRequest回调。在某些情况下,将使用ASP.NET提供的__doPostBack()函数回发页面,该函数在下面的代码中列出。但是,我希望能够在回发后将焦点设置为下拉列表控件。有没有办法使用Javascript设置它,或者我需要以其他方式进行设置。
function onCompanyIDSuccess(sender, e) {
if (sender == 0)
document.getElementById(txtCompanyIDTextBox).value = "";
document.getElementById(txtCompanyIDHiddenField).value = sender;
if (bAutoPostBack) {
__doPostBack(txtCompanyIDTextBox, '');
}
}
答案 0 :(得分:3)
由于您正在进行完整的回发,因此您需要在服务器端使用Page.SetFocus来获取下一页加载时发出的相应JavaScript。
否则,在纯AJAX解决方案中 - document.getElementById('id')。focus()就可以了。
答案 1 :(得分:0)
我找到了这个解决方案。在为每个特定项调用事件处理程序后面的代码中,我将Control.Focus()称为最后一行。例如,如果正在触发下拉列表事件处理程序,则下一个要聚焦的控件是zipcode文本框:
protected void ddl_state_selectedValueChanged(Object sender, EventArgs e)
{
// ... here is all my code for the event handler
txtZipCode.Focus();
}
我想要做的事情要容易得多。我一直试图通过动态创建Javascript来使事情过于复杂,这正是微软已经在框架中为我做的。