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);
    }
}  

必要に応じてタブオーダーを設定します。ただし、通貨フィールドに関しては、最初にタブで通貨記号が選択されているときに問題があり、何も入力できず、フィールドに何かを入力できるようにするにはもう一度タブを押す必要があります。

コードがこれらの記号を無視してフィールド自体に直接入る方法はありますか?

ありがとう

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 に答える