在ASP.Net中将TabIndex设置为Next Control

时间:2016-04-13 17:25:58

标签: c# asp.net tabindex

我有一个用C#编写的ASP.Net 4.5.1页面,上面有许多TextBoxes。当任何TextBox中的文本发生变化时,我想调用一个方法,1)启用Save按钮,b)在触发PostBack的TextBox之后,使用下一个TabIndex将焦点移动到TextBox。到目前为止,这是我的代码:

protected void EnableSaveButton(object sender, EventArgs e)
    {
        if ((REQUEST_PHASE)this.CurrentPhaseID == REQUEST_PHASE.RECORDS)
        {
            btnSaveACProperty.Disabled = false;
            Control control = (Control)sender;
            int tabindex = 0;
            if (control != null) 
            { 

            }
        }
    }

我想要做的是获取控件的TabIndex,然后使用TabIndex + 1找到控件并对其执行SetFocus()。我的问题是我的代码中的控件变量没有TabIndex属性。我该怎么做?

1 个答案:

答案 0 :(得分:0)

每次更改文本框时都会使页面回发到服务器似乎是一个坏主意。在Javascript中做这类事情要好得多。

this question的答案提供了各种建议,可以将重点放在下一个控件上,包括a jQuery pluginfiring a keyboard eventnavigating the DOM to find the next control

$(function(){
    $("form").on("change", ":input", function(){
        $(":submit[name$=btnSaveACProperty]").prop("disabled", false);
        $.tabNext();
    });
});

根据服务器上的条件启用或禁用此功能应该相当简单。例如,如果您将Javascript放在外部文件中,则可以有条件地包含它:

protected void Page_PreRender(object sender, EventArgs e)
{
    switch ((REQUEST_PHASE)this.CurrentPhaseID)
    {
        case REQUEST_PHASE.RECORDS:
        {
            Page.ClientScript.RegisterClientScriptInclude(
                typeof(REQUEST_PHASE), "MoveFocusOnChange", 
                "~/scripts/moveFocusOnChange.js");
            break;
        }
    }
}