1

ここの例を利用する

 select: {
                name: "Select", 
                type: 'select', 
                options: {1: 'one', 2: 'two', 3: 'three'}, 
                selected: 2
            }

ドロップダウン メニューのデフォルトの選択を にすることを拒否しtwo、代わりに のままにしoneます。jQuery 1.8 を使用していますが、このバージョンの上記のコードに既知の問題はありますか、それとも導入できる回避策はありますか? この問題は、デモ ページでも引き続き発生します。

Environment:
jQuery 1.8
Firefox 19.0

ワーキングフィドル

4

1 に答える 1

3

プラグインをチェックしましたが、選択の値では機能しなかったと思いますselectedが、実行時にのみ現在の値を使用します。

これは、オブジェクトsetInputValuesで未定義の場合、関数が選択されたプロパティを設定するためです。dataデータ オブジェクトが未定義でない場合にのみプロパティを設定して、コードを修正しました。

見る:

// import values into <input> commands
$.contextMenu.setInputValues = function(opt, data) {
    if (data === undefined) {
        data = {};
    }

    $.each(opt.inputs, function(key, item) {
        switch (item.type) {
            case 'text':
            case 'textarea':
                item.value = data[key] || "";
                break;

            case 'checkbox':
                item.selected = data[key] ? true : false;
                break;

            case 'radio':
                item.selected = (data[item.radio] || "") == item.value ? true : false;
                break;

            case 'select':
                if (data[key]!=undefined ){
                  item.selected = data[key] || "";
                }
                break;
        }
    });
};

作業フィドル: http://jsfiddle.net/vYnv3/1/

固定コードのペーストビンは次のとおりです: http://pastebin.com/Mg3j7ifB

うまく機能する場合は、修正をフォークします。

編集

ラジオとチェックボックスのサポートも追加されました:

// import values into <input> commands
$.contextMenu.setInputValues = function(opt, data) {
    if (data === undefined) {
        data = {};
    }

    $.each(opt.inputs, function(key, item) {
        switch (item.type) {
            case 'text':
            case 'textarea':
                item.value = data[key] || "";
                break;

            case 'checkbox':
                if (data[key]!=undefined ){
                    item.selected = data[key] ? true : false;
                }
                break;

            case 'radio':
                if (data[item.radio]!=undefined ){
                    item.selected = (data[item.radio] || "") == item.value ? true : false;
                }
                break;

            case 'select':
                if (data[key]!=undefined ){
                  item.selected = data[key] || "";
                }
                break;
        }
    });
};

新しいペーストビン: http://pastebin.com/c8XFVMiD

作業フィドル: http://jsfiddle.net/vYnv3/2/

于 2013-07-16T08:15:04.457 に答える