0

このショートコード生成フォームを、フォームで選択された値に応じて 2 つの異なるショートコードのいずれかを生成するフォームに変換したいと考えています。そのため、ラジオ ボタンには、「どのショートコードを作成しますか?」というメッセージが表示されます。次に、それを選択し、他のフィールドに進んで属性値を入力します。コードを生成する段階になると、JS はラジオ ボタンの質問に基づいて出力を調整します。自分で変更しようとしましたが、問題は、このスクリプトがオプション インデックスから属性を生成するため、インデックスに含まれないオプションを含める方法がわからないことです。

var table = form.find('table');
form.appendTo('body').hide();
form.find('#myshortcodeidstem-submit').click(function(){
    var options = { 
        'shortcodename' : '', \\ THIS IS THE ONE TO DETERMINE THE SHORTCODE NAME
        'attribute' : '', \\ THIS IS THE ATTRIBUTE THAT BOTH SHORTCODES SHARE
    };
    var shortcode = '[myshortcode'; \\ THIS LINE NEEDS TO BE CONDITIONAL ON OPTION 1
        for( var index in options) {
        var value = table.find('#myshortcodeidstem-' + index).val();

        if ( value !== options[index] && value != null )
        shortcode += ' ' + index + '="' + value + '"';
        }

    shortcode += '] Content Here [/myshortcode]'; \\ THIS LINE CONDITIONAL ON OP1

- - アップデート - -

Barmar は私に正しい方向を示してくれたので、うまくいきましたが、もっと経済的な方法があるかどうか知りたいです。ここに私が持っているものがあります:

var table = form.find('table');
    form.appendTo('body').hide();
    form.find('#myshortcodeid-submit').click(function(){
        var codeselector = table.find('#myshortcodeid-codeselector').val();
        if (codeselector === '1'){          
        var options = { 
            'attribute'   : '',
            };
        var shortcode = '[shortcode_one';
            for( var index in options) {
            var value = table.find('#myshortcodeid-' + index).val();

            if ( value !== options[index] && value != null )
                shortcode += ' ' + index + '="' + value + '"';
        }
        shortcode += '] Content Here [/shortcode_one]';
        }
        if (codeselector === '2'){          
        var options = { 
            'attribute'   : '',
            };
        var shortcode = '[shortcode_two';
            for( var index in options) {
            var value = table.find('#myshortcodeid-' + index).val();

            if ( value !== options[index] && value != null )
                shortcode += ' ' + index + '="' + value + '"';
        }
        shortcode += '] Content Here [/shortcode_two]';
        }

- - アップデート - -

オプションのインデックスを繰り返さずに、より経済的な方法を見つけました。以下の回答を参照してください。

4

1 に答える 1

1

これが私が思いついた最も経済的な方法です。このようにオプション インデックスを繰り返さない。よく働きます。ショートコードを選択するドロップダウン フィールドの var を作成し、その var の値を参照する if ステートメントを実行する必要がありました。

        var codeselector = table.find('#myid-codeselector').val();
        if (codeselector === '1'){          
        var shortcode = '[shortcode_one';
        }
        if (codeselector === '2'){          
        var shortcode = '[shortcode_two';
        }
        var options = { 
            'attribute'   : '',
            };
            for( var index in options) {
            var value = table.find('#myid-' + index).val();

            if ( value !== options[index] && value != null )
                shortcode += ' ' + index + '="' + value + '"';
        }
        if (codeselector === '1'){          
        shortcode += '] Content Here [/shortcode_one]';
        }
        if (codeselector === '2'){          
        shortcode += '] Content Here [/shortcode_two]';
        }
于 2013-10-07T22:56:46.337 に答える