0

I have some select dropdowns

            <div class="selector">
                <div class="nomination selectors-part">Year</div>
                <div class="selection mini">
                    <select name="seltoYear">
                        <option selected disabled>Till</option>
                        <option value="2015">2015</option>
                        <option>2014</option>
                        <option>2013</option>
                        <option>2012</option>
                        <option>2011</option>
                    </select>
                </div>
                <div class="selection mini">
                    <select name="selfromYear">
                        <option selected disabled>From</option>
                        <option>1956</option>
                        <option>1986</option>
                        <option>1993</option>
                        <option>1994</option>
                        <option>1995</option>
                        <option>1996</option>
                    </select>
                </div>
                <div class="clear"></div>
            </div>

I trying to set selected value back after POSt, but nothing hapins

$(function() {

$('div.list input[type=checkbox]').on('change',onValueChange);     
$('div.selector select').on('change', onValueChange);

function onValueChange() {

    var Checked = {};
    var Selected = {};
// Hold all checkboxes
    $('div.list input[type=checkbox]:checked').each(function () {
        var $el = $(this);
        var name = $el.attr('name');
        if (typeof (Checked[name]) === 'undefined') {
            Checked[name] = [];
        }
        Checked[name].push($el.val());
    });
// Hold all dropdowns
    $('div.list select').each(function () {

        var $el = $(this);
        var name = $el.attr('name');

        if (typeof (Selected[name]) === 'undefined') {
            Selected[name] = [];
        }
        Selected[name].push($el.val());
    });

// Put all together to POST 
    $.ajax({
        url: '/Search.asp',
        type: 'POST',
        data: $.param(Checked) + "&" + $.param(Selected),
        dataType: 'text',
        success: function (data) {
            $("#ExSearchForm").html(data)
                .find('div.list input[type=checkbox],div.selector select').each(function () {
                    var $el = $(this);
                    var name = $el.attr('name');
                    var value = $el.attr('value');

                    if (Checked[name] && Checked[name].indexOf(value) !== -1) {
                        $el.prop('checked', true);
                    }
                    if (Selected[name] && Selected[name].indexOf(value) !== -1) {
                        $el.prop('selected', true);
                    }
                });
        }
    });
};
});

Checkboxes are selecting as well but dropdowns do not want to be selected.

Dmitrij Holkin
  • 1,995
  • 3
  • 39
  • 86
  • 2
    ` – Regent Jun 11 '15 at 10:54

2 Answers2

2

To set the select elements, you have to use val() like

if (Selected[name] && Selected[name].indexOf(value) !== -1) {
   $el.val(value);
}

Note, the way you calculate value will not work as your select element does not have an attribute of value

See Set selected option of select box

Update

Change

 $('div.list select').each(function () {

    var $el = $(this);
    var name = $el.attr('name');

    if (typeof (Selected[name]) === 'undefined') {
        Selected[name] = [];
    }
    Selected[name].push($el.val());
});

to

   $('div.list select').each(function () {

        var $el = $(this);
        var name = $el.attr('name');

        Selected[name] = $el.val();
    });

and

if (Selected[name] && Selected[name].indexOf(value) !== -1) {
     $el.prop('selected', true);
 }

to

if (Selected[name]) {
    $el.val(Selected[name]);
}
Community
  • 1
  • 1
AmmarCSE
  • 30,079
  • 5
  • 45
  • 53
0

Try this,

if (Selected[name] && Selected[name].indexOf(value) !== -1) {
    $el.attr('selected', 'selected');
}
Twinkle
  • 111
  • 5