2

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

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

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()); 
        }
    }
});
4

2 回答 2

1

不需要隐藏输入!

类似的问题建议使用$.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(无隐藏输入)

于 2013-06-06T19:26:01.503 回答
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 )); 

    });
})();
于 2013-06-06T19:22:52.403 回答