代码之家  ›  专栏  ›  技术社区  ›  stephenbayer

将焦点设置为由javascript启动的回发

  •  0
  • stephenbayer  · 技术社区  · 16 年前

    我正在用ASP.NET做一些客户端JavaScript。
    我有下面的javascript来处理xmlhttpRequest回调。在某些情况下,将使用下面的代码中列出的ASP.NET提供的uuDoPostback()函数将页面发回。然而,我希望能够设置焦点下拉列表控件后,发回发生。有没有一种方法可以使用javascript来设置它,或者我需要用其他方法来装配它。

        function onCompanyIDSuccess(sender, e) {
           if (sender == 0)
               document.getElementById(txtCompanyIDTextBox).value = "";
           document.getElementById(txtCompanyIDHiddenField).value = sender;
           if (bAutoPostBack) {
               __doPostBack(txtCompanyIDTextBox, '');
           }
       }
    
    2 回复  |  直到 16 年前
        1
  •  3
  •   Mark Brackett    16 年前

    因为你要做一个完整的回发,你需要使用 Page.SetFocus 在服务器端获取下一页加载时发出的适当的javascript。

    否则,在纯Ajax解决方案中,document.getElementByID(“id”).focus()可以做到这一点。

        2
  •  0
  •   stephenbayer    16 年前

    我找到了解决这个问题的方法。在为每个特定项调用的代码隐藏事件处理程序中,我调用control.focus()作为最后一行。例如,如果正在触发DropDownList事件处理程序,下一个要聚焦的控件是ZipCode文本框:

    protected void ddl_state_selectedValueChanged(Object sender, EventArgs e)
    {
        // ... here is all my code for the event handler
    
        txtZipCode.Focus();
    }
    

    我想做的事情容易多了。我一直试图通过在运行中创建JavaScript来克服这些困难,而这正是微软在框架中为我所做的。