我有一个用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属性。我该怎么做?
答案 0 :(得分:0)
每次更改文本框时都会使页面回发到服务器似乎是一个坏主意。在Javascript中做这类事情要好得多。
this question的答案提供了各种建议,可以将重点放在下一个控件上,包括a jQuery plugin,firing a keyboard event和navigating 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;
}
}
}