Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript tabIndex属性与AJAX_Javascript_Ajax_Asp.net Ajax_Asp.net 2.0 - Fatal编程技术网

Javascript tabIndex属性与AJAX

Javascript tabIndex属性与AJAX,javascript,ajax,asp.net-ajax,asp.net-2.0,Javascript,Ajax,Asp.net Ajax,Asp.net 2.0,我看过一些关于tabIndex问题的帖子,但是我找不到一个像下面这样的场景需要修复 这是这个项目的底细。它是一个ASP.NET2.0Web应用程序,使用AJAX1.0扩展和jQuery。我正在寻找任何编程语言的想法来处理这样的场景 首先,我知道如何设置tabIndex,不管它是硬编码的还是在用户控件中自动生成的。我遇到的问题是,如果您有一个使用AJAX的复合控件,例如网格控件,并且您为所有表单条目元素(包括AJAX网格控件中的可见行)设置了tabIndex属性,该怎么办。例如,如果我通过AJAX

我看过一些关于tabIndex问题的帖子,但是我找不到一个像下面这样的场景需要修复

这是这个项目的底细。它是一个ASP.NET2.0Web应用程序,使用AJAX1.0扩展和jQuery。我正在寻找任何编程语言的想法来处理这样的场景

首先,我知道如何设置tabIndex,不管它是硬编码的还是在用户控件中自动生成的。我遇到的问题是,如果您有一个使用AJAX的复合控件,例如网格控件,并且您为所有表单条目元素(包括AJAX网格控件中的可见行)设置了tabIndex属性,该怎么办。例如,如果我通过AJAX向网格中添加新行,选项卡排序会发生什么变化

以下是选项卡顺序,而不是HTML中元素的顺序:

初始页面加载

Input 1, tab index 1
Input 2, tab index 2
Grid 1, tab index 3
|-- Row 1 (loaded initially)
     |-- Cell 1, tab index 4
     |-- Cell 2, tab index 5
Input 3, tab index 6
etc.
现在通过AJAX,我向网格中添加了一个新行

Input 1, tab index 1
Input 2, tab index 2
Grid 1, tab index 3
|-- Row 1 (loaded initially)
     |-- Cell 1, tab index 4
     |-- Cell 2, tab index 5
|-- Row 2 (loaded via AJAX)
     |-- Cell 1, tab index ?
     |-- Cell 2, tab index ?
Input 3, tab index 6
etc.
从我的理解来看,tabIndex属性的默认值是-1,因此所有没有该属性的元素都会按照它们在文档对象模型树中出现的顺序,在tabIndex属性值大于0的任何元素(如果有的话)之后进行标记。因此,我的第2行单元格将得到-1作为其索引值。因此,在我的表单中切换如下:

Input 1, tab index 1
Input 2, tab index 2
Grid 1, tab index 3
|-- Row 1 (loaded initially)
     |-- Cell 1, tab index 4
     |-- Cell 2, tab index 5
Input 3, tab index 6

|-- Row 2 (loaded via AJAX)
     |-- Cell 1, tab index 7 (7 because of default -1 value behavior)
     |-- Cell 2, tab index 8 (8 because of default -1 value behavior)
我查看了一些jQuery插件,但没有一个能够处理我想做的事情(或者至少我认为它们不会)。我检查了jQuery选项卡索引插件和jQuery字段插件(v0.9.2)

我的想法是:

-在客户端循环表单元素以重置所有tabIndex值。如果您希望按照元素在表单中的显示顺序来排序,那么这是可行的,但是这可能会很慢,并且很可能会导致页面在加载时出现停顿。同样,如果您想要表单中显示的顺序,为什么还要使用tabIndex呢?没有它的元素将是tabIndex=-1,并将按照它们在HTML中出现的顺序进行制表

-对于复合控件,指定保留的tabIndex范围,因此当我在网格的第1行单元格中点击时,一个tabIndex是4,我说网格后面的下一个控件将是,例如,tabIndex=500,这样我可以在通过AJAX添加新行时保留其他tabIndex值


-你的想法就在这里。

虽然这不是你问题的答案,但我认为这值得一提-据我所知,1不是tabindex的默认值,将tabindex设置为-1将意味着在几乎所有现代浏览器(包括IE)中都不能使用tab键指向该元素。如果您在任何测试场景中都假设这一点,这可能会非常混乱。

实际上,在您的情况下,解决方案将非常简单。只需将所有表单输入和动态输入设置为“1”。它将根据相对顺序在所有1之间切换。唯一的问题是,我认为浏览器会在文档加载时设置选项卡索引,所以Ajax元素可能永远不会进入选项卡顺序