Combobox更改事件以在更改之前恢复为值

时间:2013-06-06 19:20:06

标签: jquery

我需要检测comboBox的选定值,如果选择了某个值,则生成一个确认对话框。如果确认为假,我需要恢复到更改之前的值。我正在尝试使用隐藏字段来保存更改前的值。这不起作用......

更新:当我添加警报以查看该值是否实际在隐藏字段中设置时,一切正常。如果我删除警报,则更改永远不会发生。某种时间问题?我延迟更换了警报,它没有解决任何问题。有什么想法吗?

jQuery('#cboCityID1').focus(function() {
    if(jQuery('#cboCityID1').val() != '') {
        jQuery('#hiddencity1').val(jQuery('#cboCityID1').val()); 
    }
});

jQuery('#cboCityID1').change(function() {

    alert("as debug 1: " + jQuery('#hiddencity1').val());

    if(jQuery('#cboCityID1').val() == '') {
        var r = confirm("Are you sure");
        if(!r) {
            jQuery('#cboCityID1').val(jQuery('#hiddencity1').val()); 
        }
    }
});

2 个答案:

答案 0 :(得分:1)

不需要隐藏输入!

A similar question建议使用$.data,如此:

$('select').change(function() {
    var selected = $(this).val();

    if (selected == 'bar') {
        if (!confirm('Are you sure?')) {
            $(this).val($.data(this, 'current')); 
            return false;
        }     
    }

    $.data(this, 'current', $(this).val());
});

我使用建议的方法创建了JSFiddle(没有隐藏的输入)

答案 1 :(得分:0)

(function () {
    var previous;    
    $("select").focus(function () {
        previous = this.value;
    }).change(function() {    
       var r = confirm("Are you sure");
    if(!r)        
        $('#cboCityID1').val(jQuery('#hiddencity1').val(previous )); 

    });
})();