Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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 对Jquery返回的HTML元素进行排序_Javascript_Jquery_Asp.net_Html_Focus - Fatal编程技术网

Javascript 对Jquery返回的HTML元素进行排序

Javascript 对Jquery返回的HTML元素进行排序,javascript,jquery,asp.net,html,focus,Javascript,Jquery,Asp.net,Html,Focus,可能重复: 技术:Asp.net与jQuery。 嗨,极客们, 概述: 我是一个jQuery noob,我一直在开发这个jQuery脚本,以使OneNet按键移动到下一个输入元素(textarea、select、input等),我尝试了自己的几种解决方案,甚至尝试了在线可用的解决方案,但每种解决方案都有一些弱点或局限性,我终于找到了一个对我来说足够好的解决方案,但它仍然存在一些问题 问题: 我已经查询了所有具有属性[tabindex]的元素,现在jquery返回DOM中的所有元素,因为它们在它

可能重复:

技术:Asp.net与jQuery。

嗨,极客们,

概述:
我是一个jQuery noob,我一直在开发这个jQuery脚本,以使OneNet按键移动到下一个输入元素(textarea、select、input等),我尝试了自己的几种解决方案,甚至尝试了在线可用的解决方案,但每种解决方案都有一些弱点或局限性,我终于找到了一个对我来说足够好的解决方案,但它仍然存在一些问题

问题:
我已经查询了所有具有属性[tabindex]的元素,现在jquery返回DOM中的所有元素,因为它们在它们的层次结构中存在,但是我希望元素按照它们的tabindex排序

1)因此需要对元素进行排序,以便我可以根据tabindex而不是其层次结构移动到下一个元素。
2)如果任何元素被设置为readonly=“readonly”或disabled=“disabled”,那么该元素根本不应该获得焦点

我不想把Jquery和HTML代码放在问题上,所以我创建了

让我知道如何解决这个问题。


P.S:告诉我你们需要更多信息。

我对任何节点数组进行排序的方法都很简单

首先,循环遍历节点列表并构建一个数组。每个数组元素都是
[元素,排序依据]
。在本例中,
[element,element.tabIndex]

然后,将
sort
与回调一起使用:

arr.sort(function(a,b) {return a[1]-b[1];});
这将按照每个数组的第二个元素进行排序,这是排序的依据

(可选)使用
map
将每个数组元素转换为其第一个元素(
arr.map(函数(a){returna[0];});


您现在拥有了已排序的元素数组。

我对任何节点数组进行排序的方法都很简单

首先,循环遍历节点列表并构建一个数组。每个数组元素都是
[元素,排序依据]
。在本例中,
[element,element.tabIndex]

然后,将
sort
与回调一起使用:

arr.sort(function(a,b) {return a[1]-b[1];});
这将按照每个数组的第二个元素进行排序,这是排序的依据

(可选)使用
map
将每个数组元素转换为其第一个元素(
arr.map(函数(a){returna[0];});

现在您有了已排序的元素数组

注:无耻地窃取了@Kolink的想法

$(文档).ready(函数(){
var arr=$(“:input[tabindex]:not('[disabled=disabled],[readonly=readonly]')”;//这将为您提供未禁用或只读的输入元素
//正如Kolink在回答中提到的,使用javascript数组的.sort函数根据选项卡索引对数组进行排序
var newArr=arr.sort(函数(a,b){
返回a[1]-b[1];
});
控制台日志(newArr);
$(newArr[0]).select().focus();//对tabindex=1的元素进行聚焦
var$currentFocus=0;//将currentFocus指针设置为排序数组的第一个元素
var$arrLen=newArr.length;
$(':input').live(“keydown”,函数(e){不要使用.live,因为它已被弃用,但我将暂时使用它,请参阅答案末尾指向.delegate的链接
如果(e.which==13)//输入key
{
e、 预防默认值();
如果($currentFocus
注:无耻地窃取了@Kolink的想法

$(文档).ready(函数(){
var arr=$(“:input[tabindex]:not('[disabled=disabled],[readonly=readonly]')”;//这将为您提供未禁用或只读的输入元素
//正如Kolink在回答中提到的,使用javascript数组的.sort函数根据选项卡索引对数组进行排序
var newArr=arr.sort(函数(a,b){
返回a[1]-b[1];
});
控制台日志(newArr);
$(newArr[0]).select().focus();//对tabindex=1的元素进行聚焦
var$currentFocus=0;//将currentFocus指针设置为排序数组的第一个元素
var$arrLen=newArr.length;
$(':input').live(“keydown”,函数(e){不要使用.live,因为它已被弃用,但我将暂时使用它,请参阅答案末尾指向.delegate的链接
如果(e.which==13)//输入key
{
e、 预防默认值();

如果($currentFocusThis可以帮助你:这可以帮助你:谢谢你的输入,但是noobs需要更多的解释:)谢谢你的输入,但是noobs需要更多的解释:)@Jhon你必须投票给Kolink,他值得:),我只是验证你的小提琴:输入[tabindex]'我只想选择具有tabindex的元素attribute@Jhon.delegate是的更新。live,谢谢that@Jhon你必须投票给Kolink,这是他应得的:),我只是在验证你的小提琴:“输入[tabindex]”我只想选择有tabindex的元素attribute@Jhon.delegate是的更新。live,谢谢