将重点放在由javascript启动的回发上

时间:2008-12-22 20:18:25

标签: asp.net javascript

我正在使用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, '');
       }
   }

2 个答案:

答案 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来使事情过于复杂,这正是微软已经在框架中为我做的。