0

我想将表单上的标签顺序设置为从左到右。我在网上看到了以下代码

for (var i = 0; i < crmForm.all.length; i++) 
{
    var element = crmForm.all[i];
    if (element.tabIndex && element.tabIndex != "0") {
        if (element.className == 'ms-crm-Hidden-NoBehavior') 
            continue;
        if (element.tagName == 'A') {
            if (element.className != 'ms-crm-InlineTabHeaderText') 
                continue;
        }

        element.tabIndex = 10000 + (i * 10);
    }
}  

它设置了我想要的标签顺序。但是,在货币字段中存在一个问题,因为当您第一次在其中选择货币符号时,您无法键入任何内容,并且您必须再次使用 tab 才能在字段中键入任何内容。

代码有没有办法忽略这些符号并直接进入该字段本身?

谢谢

4

2 回答 2

2

您的方法构成不受支持的自定义,但只需少量手动工作,您就可以以完全受支持的方式实现相同的结果。您需要做的就是在表单中为每一行字段添加一个新的“部分”(不显示标题或分隔符)。

结果是没有不受支持的 JScript 和与应用程序的其余部分完全一致的可预测行为。

在下面的示例中,我展示了一个示例,说明我必须如何布置我的表单,以使本机制表行为“有意义”。但是,如果我想使用水平制表符,我可以重新排列我的表单,引入一些新的部分,然后让它在没有代码的情况下按我的意愿工作。

这种方法的美妙之处在于它只影响您想要的表单部分。

使用表单布局强加标签顺序的示例

于 2012-12-12T14:03:30.160 回答
0

虽然从技术上讲它仍然不受支持,但我似乎已经解决了这里的货币问题:

function TabOrderLefttoRight() {
    for (var i = 0; i < crmForm.all.length; i++) {
    var element = crmForm.all[i];
    if (element.tabIndex && element.tabIndex > "0") { //less than zero instead of !=
        if (element.className == 'ms-crm-Hidden-NoBehavior')
            continue;
        if (element.tagName == 'A') {
            if (element.className != 'ms-crm-InlineTabHeaderText')
                continue;
        }

        element.tabIndex = 10000 + (i);
    }
}

}

这样,它不会影响 tabindex(货币字段)中低于 0 的项目。

于 2013-06-12T22:52:42.430 回答