0

在下面的代码分支中,当“my_theme”选择菜单更改时,我对服务器进行了几次 $get 调用,以检索所选主题的默认颜色选项并预览图像。在此过程中,为避免用户在加载颜色之前单击“应用更改”按钮,我将该按钮设置为禁用,然后在操作完成后将其重置。

但是,在一次安装中,某些事情显然失败了,并且按钮保持禁用状态(即使 get 操作中没有明显的错误)。

在获取全部完成后,我如何更好地构建它以重新启用提交按钮?

$('#my_theme').change
(
    function()
    {
        $("#largePreview").hide();
        var myImage = $('#my_theme :selected').val();
        var thisOption = $(this);
        $('.selectedImage img').attr('src','<?php echo get_bloginfo('template_directory') ?>/styles/'+myImage+'/screenshot.jpg');
        $('.selectedImage img').attr('alt',myImage);

        try{
            $('button.save').attr('disabled','disabled');
            $.get('<?php echo get_bloginfo('template_directory') ?>/color.php', {theme: myImage, spot: '1'}, function(data){doColor('#my_theme_header_color', data);});
            $.get('<?php echo get_bloginfo('template_directory') ?>/color.php', {theme: myImage, spot: '2'}, function(data){doColor('#my_theme_sidebar_color', data);});
            $.get('<?php echo get_bloginfo('template_directory') ?>/color.php', {theme: myImage, spot: '3'}, function(data){doColor('#my_theme_spot_color_alt', data);});
            $.get('<?php echo get_bloginfo('template_directory') ?>/color.php', {theme: myImage, spot: '4'}, function(data){doColor('#my_theme_spot_color_alt2', data);});
            $.get('<?php echo get_bloginfo('template_directory') ?>/color.php', {theme: myImage, spot: '5'}, function(data){doColor('#my_bg_attach_color', data);});
        }
        catch(e){
            $('button.save').attr('disabled','');
        }
        $.get('<?php echo get_bloginfo('template_directory') ?>/get-image.php', {template: myImage, action: 'background'}, function(data){
            if(data){$('#currentBackgroundImage').attr('src','<?php echo get_bloginfo('template_directory') ?>/styles/'+myImage+'/background.png');}
            else{$('#currentBackgroundImage').attr('src','<?php echo get_bloginfo('template_directory') ?>/background-missing.png');}
        });

        $.get('<?php echo get_bloginfo('template_directory') ?>/get-image.php', {template: myImage, action: 'header'}, function(data){
            if(data){$('#currentHeaderImage').attr('src','<?php echo get_bloginfo('template_directory') ?>/styles/'+myImage+'/header.png');}
            else{$('#currentHeaderImage').attr('src','<?php echo get_bloginfo('template_directory') ?>/header-missing.png');}

            $('button.save').attr('disabled','');

        });

});
4

4 回答 4

2

尝试$('button.save').removeAttr('disabled');

“禁用”是一个布尔属性,所以它要么存在(真)要么不存在(假)。

于 2012-04-17T13:53:24.267 回答
2

尝试将属性设置为 false:

$('button.save').attr('disabled', false);

或删除它:

$('button.save').removeAttr('disabled');
于 2012-04-17T13:54:05.000 回答
0

您可以利用http://api.jquery.com/jQuery.when/因此您可以执行许多 ajax 请求,并在它们都完成后执行您想要的。

$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1,  a2){
    /* a1 and a2 are arguments resolved for the 
        page1 and page2 ajax requests, respectively */
   var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */
   if ( /Whip It/.test(jqXHR.responseText) ) {
      alert("First page has 'Whip It' somewhere.");
   }
});
于 2012-04-17T13:56:44.990 回答
0

使用 .prop()。

.attr() 是这样做的旧方法。

$('button.save').prop("disabled", false);

http://api.jquery.com/prop/#prop2

要区分何时使用 prop 或 attr,请考虑以下技巧:

<tag anything=value> is an attr
<tag value> is a prop

例如

<input disabled>
<input type="checkbox" checked>
<option selected> 
于 2012-04-18T06:54:32.070 回答