0

基本的に、JQuery / Javascript を使用していくつかのドロップダウン リストを埋めましたが、ポストバック後は完全にリセットされて空になります。そのため、ボタンをもう一度クリックして入力し、ユーザーに値を選択させる必要があります。

手動で定義するオプションを含むドロップダウンリストは、選択した位置などを保持します...他のddlの値も保持されるようにするにはどうすればよいですか?

コードは次のとおりです。

<script type="text/javascript">

    (function ($) {
        $.fn.cascade = function (options) {
            var defaults = {};
            var opts = $.extend(defaults, options);

            return this.each(function () {
                $(this).change(function () {
                    var selectedValue = $(this).val();
                    var params = {};
                    params[opts.paramName] = selectedValue;
                    $.getJSON(opts.url, params, function (items) {
                        opts.childSelect.empty();
                        $.each(items, function (index, item) {
                            opts.childSelect.append(
                                $('<option/>')
                                    .attr('value', item.Id)
                                    .text(item.Name)
                            );
                        });
                    });
                });
            });
        };
    })(jQuery);

    $(function () {
        $('#loc').cascade({
            url: '@Url.Action("First")',
            paramName: 'aId',
            childSelect: $('#loc1')
        });

        $('#loc1').cascade({
            url: '@Url.Action("Second")',
            paramName: 'sId',
            childSelect: $('#loc2')
        });
    });

</script>

このコードは、値のリストを返すいくつかのサーバー側関数を呼び出すだけです

4

1 に答える 1

0

私は非常に似たアプローチをしています:

jQuery.each(resObject.gaData, function(i, o) 
{
    val = o.id;
    text = o.name + " (" + o.status + "/" + o.serving + ")";
    jQuery('#gacampaign').append(jQuery('<option></option>').val(val).html(text)  );
    if ( someVar == val )
    {
        jQuery("#gacampaign option[value='" + val + "']").attr('selected',true);
    }
});

これは AJAX POST の成功ハンドラー内にあるため、それほど一般的ではありませんが、非常に似ています。唯一の違いはこれです:

あなたのコード:

opts.childSelect.append($('<option/>').**attr**('value', item.Id).**text**(item.Name));

私のコード:

jQuery('#gacampaign').append(jQuery('<option></option>').**val**(val).**html**(text));

そして、私が使用するボックスを空にするために

jQuery("#gacampaign option").remove();
于 2013-05-29T21:17:21.207 に答える