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');

「disabled」はブール属性であるため、存在する (true) か存在しない (false) かのいずれかです。

于 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("無効", 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 に答える