选择菜单重置为先前选择的选项

时间:2015-04-03 06:15:57

标签: javascript html ajax

我有一个选择菜单,可以触发ajax帖子然后显示成功或失败消息:

菜单的HTML如下所示:

<select name="return_action_id" class="form-control">
    <option value="0"> --- Please Select --- </option>
    <option value="1" selected>Refunded</option>
    <option value="2">Credit Issued</option>
    <option value="3">Replacement Sent</option>
</select>

ajax帖子的Javascript看起来像这样:

$('select[name="return_action_id"]').change(function(){
    var a=$(this);
    var value = a.val();
    $.ajax({
        url:'index.php?route=sale/returns/action&token=<?= $token; ?>&return_id=<?= $return_id; ?>',
        type:'post',
        dataType:'json',
        data:'return_action_id='+value,
        beforeSend:function(){
            a.blur().button('loading').append($('<i>',{class:'icon-loading'}));
        },
        complete:function(){
            a.button('reset');
        },
        success:function(json){
            if(json['error']){
                alertMessage('danger',json['error']);
            }
            if(json['success']){
                alertMessage('success',json['success']);
                //$('select[name="return_action_id"] option:selected').prop('selected', false);
                //$('select[name="return_action_id"] option[value="'+value+'"]').prop('selected', true);
            }
        }
    });
});

每次从菜单中选择一个选项时,Ajax会按预期触发并创建我的消息,但所选的选项不会收到所选属性,菜单将恢复为最初选择的选项。

例如,在上面的html代码中,当前选择了Refunded。如果我在菜单中选择Credit Issued,则会触发Ajax并且菜单会恢复为已选择退款。

你会在javascript成功方法中看到我有一些代码注释了我试图让它表现的地方。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您在此处select重置a.button('reset')菜单,删除此行,当前值将保持选中状态。