Bir jQuery iletişim kutusundaki bir düğmeyi bir işlevden nasıl devre dışı bırakabilirim?


237

Kullanıcının belirli bilgileri girmesini gerektiren bir jQuery iletişim kutusu var. Bu formda, "devam et" düğmem var. Bu "devam" düğmesinin yalnızca tüm alanların içinde içerik olduğunda etkinleştirilmesini istiyorum, aksi takdirde devre dışı kalacaktır.

Alan durumu her değiştiğinde çağrılan bir fonksiyon yazdım. Ancak, iletişim kutusunun bu işlevden nasıl etkinleştirileceğini ve devre dışı bırakılacağını bilmiyorum. Ne yapmalıyım?

Hata! Bu düğmelerin şu şekilde oluşturulduğunu belirtmeyi unuttuk:

$(function() {
  $("#dialog").dialog({
    bgiframe: true,
    height: 'auto',
    width: 700,
    show: 'clip',
    hide: 'clip',
    modal: true,
    buttons: {
      'Add to request list': function() {
        $(this).dialog('close');
        $('form').submit();
      },
      'Cancel': function() {
        $(this).dialog('close');
      }
    }
  })
});

Şurada iyi bir cevap var: stackoverflow.com/questions/3646408/…
Amir

3
Bunu biraz araştırdım ve bugüne kadarki en temiz çözümün aşağıdaki bağlantıda açıklandığını

Yanıtlar:


260

Devre dışı bırakılan özelliği ayarlamak istersiniz

 $('#continueButton').attr("disabled", true);

Güncelleme : Ahha, şimdi karmaşıklığı görüyorum. JQuery Diyalog "düğmeleri" bölümünde yararlı olacaktır tek bir satır (vardı.

 var buttons = $('.selector').dialog('option', 'buttons');

Düğmeler koleksiyonunu iletişim kutusundan almanız, hangisine ihtiyacınız olduğunu bulmak için döngüden geçmeniz ve ardından devre dışı bırakılmış özniteliği yukarıda gösterdiğim gibi ayarlamanız gerekir.


Ne yazık ki JQuery iletişim kutusu bunu yapmayı çok kolay hale getirmez, bu yüzden biraz çalışmak zorunda kalacaksınız.
Tom Ritter

Evet, ancak düğmeler seçeneği DOM öğelerini döndürmez, ancak işlevleri döndürür - bunlar aracılığıyla yineleme iyidir, ancak birini devre dışı bırakmak o kadar kolay değildir. Burada bir şey mi eksik?
Remi Despres-Smyth

1
Düğmeleri devre dışı bırakmak için bu yöntemi geçici olarak bulmanız gerekir. Sonuçta ortaya çıkan dom öğelerini sayfadan çıkarmak için jQuery-foo kullanın.
Stefan Kendall

36
Kabul edildi - öyleyse bu neden seçilen cevap? Eksik için -1.
Remi Despres-Smyth

22
.prop('disabled', true)JQuery 1.6+
Molomby'de

191

Çok basit:

$(":button:contains('Authenticate')").prop("disabled", true).addClass("ui-state-disabled");

4
Bu çözümü seviyorum, ama gerçekten okumalı: $ (": button: içerir ('Kimlik Doğrulama')"). Attr ("devre dışı", "devre dışı"). AddClass ('ui-state-devre dışı'); (addClass eksikti)
Eric Asberry

4
Birkaç iletişim kutusu varsa hangi iletişim kutusunu değiştirmeniz gerektiğini tanımlamanız gerekir: $ ("# dialogId"). Parent (). $ (": Button: içerir ('Kimlik Doğrulaması')"). Attr ("devre dışı", " devre dışı "). addClass ('ui-state-devre dışı');
podeig

5
+1: Bu şimdiye kadarki en iyi cevap ... Kabul edilen cevap hiçbir şeye cevap vermiyor, sadece zorunlu bir yaklaşım öneriyor - ki bu hantal bir şeydir: hiçbir şeyden geçmemiz gerekmiyor, jquery bunu bizim için yapabilir.
rsenna

1
JQueryUI iletişim kutusundaki düğmeler jQueryUI düğmeler olduğundan da bu işe yaradığını buldum: $ ("# dialogID"). Parent (). Find (": button: içerir ('Authenticate')"). Düğmesi ("devre dışı") ;
writes_on

12
.prop('disabled', true)JQuery 1.6+
Molomby'de

38

Hepiniz basit bir görevi karmaşık hale getiriyorsunuz; jQueryUI iletişim kutusunun bir nedenden dolayı düğmeleri ayarlamak için iki yolu vardır.

Her düğme için yalnızca tıklama işleyicisini ayarlamanız gerekiyorsa, Objectbağımsız değişken alan seçeneği kullanın . Düğmeleri devre dışı bırakmak ve diğer nitelikleri sağlamak için Arraybağımsız değişken alan seçeneği kullanın .

Aşağıdaki örnek bir düğmeyi devre dışı bırakacak ve tüm jQueryUI CSS sınıflarını ve niteliklerini uygulayarak durumunu doğru şekilde güncelleyecektir.

Adım 1 - Bir Arraydüğmeyle iletişim kutunuzu oluşturun :

// Create a dialog with two buttons; "Done" and "Cancel".
$(".selector").dialog({ buttons: [
    {
        id: "done"
        text: "Done",
        click: function() { ... }
    },
    {
        id: "cancel"
        text: "Cancel",
        click: function() { ... }
    }
] });

Adım 2 - İletişim kutusu oluşturulduktan sonra Bitti düğmesini etkinleştirin / devre dışı bırakın:

// Get the dialog buttons.
var dialogButtons = $( ".selector" ).dialog("option", "buttons");

// Find and disable the "Done" button.
$.each(buttons, function (buttonIndex, button) {
    if (button.id === "done") {
        button.disabled = true;
    }
})

// Update the dialog buttons.
$(".selector").dialog("option", "buttons", dialogButtons);

2
Doğru fikir, ama eachdöngü gereksiz. Dizide bir classöznitelik belirtin buttonsve bunu doğru öğeyi bulmak için kullanabilirsiniz.
cdmckay

cdmackay'ın dediği gibi, döngü kurmanıza gerek yok. Yukarıdaki örnekte, devam edip bir jQuery seçici kullanabilirsiniz: var $ doneButton = $ ("# done");
Rob

Yukarıdaki yöntemi (dizi yolu) kullanarak düğmeleri oluşturmaya çalıştığımda, düğmeler 'Bitti' ve 'İptal' olarak değil '1' ve '0' olarak görüntüleniyor. Bu neden oluyor? Metin düğmede gösterilmiyor ve iki tıklama işlevi de tetiklenmiyor.
Harke

1
Bu benim için çalışıyor ve döngüye ihtiyacınız yok. Kimliği ayarlayın ve şu öğeye erişin: this.myDialog.dialog ("seçenek", "düğmeler", [{id: "addAdapterFormOkButton", metin: "Tamam", tıklayın: function () {}}]) Sadece ihtiyacınız yukarıda söyledikleri gibi seçiciyle erişmek için: var okButt = $ ("# addAdapterFormOkButton"); okButt.addClass ( 'ui-Durum-devre dışı'); okButt.attr ('devre dışı', doğru);
Gurnard

32

Düğmeler için kimlikler sağlayan bir iletişim kutusu oluşturursanız,

$("#dialog").dialog({ buttons: [ {
 id: "dialogSave",
 text: "Save",
 click: function() { $(this).dialog("close"); }
},
{
 id: "dialogCancel",
 text: "Cancel",
 click: function() { $(this).dialog("close"); 
}
}]});       

düğmeyi aşağıdaki kodla devre dışı bırakabiliriz:

$("#dialogSave").button("option", "disabled", true);

7
+ 1 vermek var ama düğme gibi özelliği yerine yöntemi kullanmak daha iyi olduğunu düşünüyorum: $ ("# dialogSave"). button ("devre dışı");
Fareed Alnamrouti

1
Ha! Şimdiye kadar en kolay! Ancak tarif edildiği gibi yöntemi kullanın.
PapillonUK

29

Düğmeyi ada göre bulmak istedim (çünkü jQuery UI iletişim kutusunda birkaç düğme var). Ayrıca belirli bir iletişim kutusunun düğmelerini almak için bir yol gerekir sayfada birkaç iletişim kutuları var. İşte benim işlevi:

function getDialogButton( dialog_selector, button_name )
{
  var buttons = $( dialog_selector + ' .ui-dialog-buttonpane button' );
  for ( var i = 0; i < buttons.length; ++i )
  {
     var jButton = $( buttons[i] );
     if ( jButton.text() == button_name )
     {
         return jButton;
     }
  }

  return null;
}

// create the dialog
$('#my_dialog').dialog( dialogClass : 'dialog1',
                        buttons: {
                                   Cancel: function() { $(this).dialog('close'); },
                                   Submit: function() { ... } 
                             } );

// now programmatically get the submit button and disable it
var button = getDialogButton( '.dialog1', 'Submit' );
if ( button )
{
  button.attr('disabled', 'disabled' ).addClass( 'ui-state-disabled' );
}

Güzel çözüm. Bununla birlikte, çözümde düğme bölmesinin iletişim kutusunun bir alt öğesi olmadığını söyleyebilirim - anahtar benzersiz bir dialogClass ayarlıyor ve seçici için kullanıyor. Ben bakarken bu beni yakaladı.
Remi Despres-Smyth

Düğmenin metninin, buttons nesnesinin tuşu ile ayarlanması ilginçtir. Özelliği ayarlamanız gerekmediğinde sınırlı görünüyor. Aksi takdirde, metnin düğme başına açıkça ayarlandığı dizi sürümü daha iyidir.
Gerard ONeill

19

Bu bir düğmeyi devre dışı bırakır:

var firstButton=$('.ui-dialog-buttonpane button:first');
firstButton.addClass('ui-state-disabled');

Bir sayfada birkaç iletişim kutusu varsa iletişim kutusu kimliğini eklemeniz gerekir.


11

Düğmeyi tıkladıktan sonra devre dışı bırakmak için değiştirilen sorudan örnek:

$(function() {
    $("#dialog").dialog({
        bgiframe: true,
        height: 'auto',
        width: 700,
        show: 'clip',
        hide: 'clip',
        modal: true,
        buttons: {
            'Add to request list': function(evt) {

                // get DOM element for button
                var buttonDomElement = evt.target;
                // Disable the button
                $(buttonDomElement).attr('disabled', true);

                $('form').submit();
            },
            'Cancel': function() {
                $(this).dialog('close');
            }
        }
    });
}

Ayrıca, aşağıdaki soru da bu konuda yardımcı olacaktır: jQuery UI iletişim kutusundaki bir düğmeyi nasıl devre dışı bırakabilirim?


9

Bir iletişim düğmesinde devre dışı bırakmanın (veya başka bir işlemi gerçekleştirmenin) kolay bir yolunu buldum.

    var dialog_selector = "#myDialogId";

    $(dialog_selector).parent().find("button").each(function() {
        if( $(this).text() == 'Bin Comment' ) {
            $(this).attr('disabled', true);
        }
    });

Sadece iletişim kutunuzun üst öğesini seçip tüm düğmeleri bulursunuz. Daha sonra düğmenizin Metnini kontrol ederek düğmelerinizi tanımlayabilirsiniz.


9

Bu .dialog("widget")iletişim DIV kendisini döndüren yöntem ile çalışma var . İletişim yöntemlerinde iseniz:

$(this)
.dialog("widget")
.find("button")
.addClass("ui-state-disabled") // for the style
.attr("disabled", true);

8

Kullanılabilirlik perspektifinden bakıldığında, düğmeyi etkin bırakmak, ancak biri eksik bir form göndermeye çalışırsa bir hata mesajı göstermek genellikle daha iyidir. Tıklamak istediğim düğme devre dışı bırakıldığında beni delirtiyor ve neden olduğuna dair bir ipucu yok.


6

Bunu dene:

$('button:eq(0)',$('#dialog_id').dialog.buttons).button('disable');

5

İşte bir jQuery iletişim kutusu için enableOk işlevi:

function enableOk(enable)
{
    var dlgFirstButton = $('.ui-dialog-buttonpane').find('button:first');

    if (enable) {
        dlgFirstButton.attr('disabled', '');
        dlgFirstButton.removeClass('ui-state-disabled');
    } else {
        dlgFirstButton.attr('disabled', 'disabled');
        dlgFirstButton.addClass('ui-state-disabled');
    }
}

"İlk" düğmesi en sağdaki düğmedir. Doğru görsel efekt için düğmeyi devre dışı bırakır ve iletişim kutusunun devre dışı sınıfını ayarlarsınız.


Bu, sayfada yalnızca bir iletişim kutusunun bulunduğunu varsayar. Bu yana başa çıkmak için sayfadaki herhangi bir iletişim kutusundan herhangi bir düğme adı getirmek için bir işlev yazdım.
Remi Despres-Smyth

5

Eski jQuery kullanıcı arayüzünde (sürüm 1.7.3)

$('.ui-dialog-buttonpane button')[0].disabled=true;

DOM öğesinin üzerindeki düğmeyi devre dışı bırakmak için. Artık bu yöntem artık Firefox'ta çalışmayan yeni jQuery kullanıcı arayüzüne (sürüm 1.8.7) yükseltme yaptığımıza rağmen, jquery UI düğmesine özel olarak jquery nesnelerinde işlevleri devre dışı bırakma ve işlevleri çağırabilirim:

$('.ui-dialog-buttonpane button').eq(0).button('disable');

5

haha, bottonlara erişmek için ilginç bir yöntem buldum

$("#dialog").dialog({

      buttons: {
        'Ok': function(e) { $(e.currentTarget).button('disable'); }

      }
 });

Görünüşe göre hepiniz argümanlarda bir olay nesnesi olduğunu bilmiyorsunuz ...

Bu arada, sadece geri arama içinden düğmeye erişir, genel durumlarda erişim için bir kimlik eklemek iyidir


1
Bunun işe yarayacağını sanmıyorum. Yalnızca Tamam düğmesi iki kez tıklandığında düğmeyi devre dışı bırakır.
Jean-François Beauchamp

İşleme tamamlanana kadar bir iletişim kutusundaki Tamam düğmesini devre dışı bırakmam gerekiyordu. Bu mükemmel çalıştı.
CodingYoshi

4

Bir düğmeyi gerçekten devre dışı bırakmak istiyorsanız, üzerindeki .unbind () yöntemini de çağırmanız gerektiğini buldum. Aksi takdirde düğme hala etkin olabilir ve çift tıklatma birden çok form gönderilmesine neden olabilir. Aşağıdaki kod benim için çalışıyor:

button = $(this).parent().find("button:contains('OK')");
button.unbind();
button.addClass('ui-state-disabled');

4

Benzer bir şey yapmaya çalışan insanlar için geçerli bir çözüm buldum. Düğmeyi devre dışı bırakmak yerine basit birif , onay kutusunun işaretli olup olmadığını kontrol etmek için fonksiyona ifade .

Değilse, gönderilmeden önce kutunun işaretlenmesi gerektiğini belirten basit bir mesaj görüntüledi.

Örneğin:

$("#confirmation-dialog").dialog({
    modal: true,
    autoOpen: false,
    width: 600,
    overlay: {
        backgroundColor: '#000',
        opacity: 0.5
    },
    close: function() {
        $('input[type="submit"]')
      .val('Record Reading')
      .attr('disabled', false);
    },
    buttons: {
        'Confirm Reading': function() {
            if($('#check-box').attr("checked")){
                $(this).dialog('close')
                $('form')
                .addClass('confirmed')
                .submit();
            }
            else {
                $('#please-check').show("slide");
            }
        }
    }
});

Neyse, umarım bu birisine yardım eder.


4

Bu görevi biraz daha kolaylaştırmak için bir jQuery işlevi oluşturdum. Bunu JavaScript dosyanıza eklemeniz yeterlidir:

$.fn.dialogButtons = function(name, state){
var buttons = $(this).next('div').find('button');
if(!name)return buttons;
return buttons.each(function(){
    var text = $(this).text();
    if(text==name && state=='disabled') {$(this).attr('disabled',true).addClass('ui-state-disabled');return this;}
    if(text==name && state=='enabled') {$(this).attr('disabled',false).removeClass('ui-state-disabled');return this;}
    if(text==name){return this;}
    if(name=='disabled'){$(this).attr('disabled',true).addClass('ui-state-disabled');return buttons;}
    if(name=='enabled'){$(this).attr('disabled',false).removeClass('ui-state-disabled');return buttons;}
});};

'Dialog' sınıfı iletişim kutusundaki 'OK' düğmesini devre dışı bırak:

$('.dialog').dialogButtons('Ok', 'disabled');

Tüm düğmeleri etkinleştir:

$('.dialog').dialogButtons('enabled');

'Kapat' düğmesini etkinleştirin ve rengi değiştirin:

$('.dialog').dialogButtons('Close', 'enabled').css('color','red');

Umarım bu yardımcı olur.


3

Maalesef, burada verilen hiçbir çözüm sayfada birkaç diyalog için işe yaramadı.

Ayrıca sorun, orijinal iletişim kutusunun kendi içinde düğme bölmesi içermemesi, ancak bunun bir kardeşi olmasıdır.

Bu yüzden böyle bir iletişim kimliğiyle seçerek geldi:

        var getFirstDialogButton = function (dialogSelector) {
            return $('.ui-dialog-buttonpane button:first',
                    $(dialogSelector).parent()[0]);
        };

...

        $('#my_dialog').dialog({
            open: function(event, ui) {
                getFirstDialogButton("#my_dialog")
                 .addClass("ui-state-disabled").attr('disabled', 'disabled' );
            },

...

ve sonra aynı getFirstDialogButton () işlevi daha sonra düğmeyi etkinleştirmek için kullanılabilir, örneğin başarılı doğrulamadan sonra.

Umarım birine yardımcı olabilir.


3

Düğmeleri atama için Array yöntemini kullanarak uyguladığım bir örnek, daha sonra kimlik seçicilerini daha sonra kullanmamı sağlıyor - tıpkı kabul edilen cevabın orijinal olarak belirtildiği gibi - düğmeleri etkinleştirmek / devre dışı bırakmak ve hatta tamamen olduğum gibi göstermek / gizlemek için yapıyor.

$( "#dialog-form" ).dialog({
autoOpen: true,
height: 500,
width: 450,
modal: true,
buttons: [
{
    id: "submit_btn",
    text: "Make Apointment",
    click: function() { 
        //do ajax       
    }       
},
{
    id: "cancel_btn",
    text: "Cancel",
    click: function() {
       $( this ).dialog( "close" );
    }
},
{
    id: "ok_btn",
    text: "OK",
    click: function() {
       $( this).dialog('close');
    },
    disabled: "disabled"
}],
close: function() {
    allFields.val( "" ).removeClass( "ui-state-error" );
}
});

Başarılı bir şekilde gönderdikten sonra, iki düğmeyi devre dışı bırakıp gizliyorum ve varsayılan olarak devre dışı bırakılan Tamam düğmesini etkinleştiriyorum.

$('#submit_btn, #cancel_btn').attr('disabled','disabled').addClass('ui-state-disabled').hide();
$('#ok_btn').attr('disabled','').removeClass('ui-state-disabled').show();

Bu yardımcı olur umarım.


3

Nick'in yaptıklarına benzer bir işlev oluşturdum, ancak yöntemim dialogClass'ı ayarlamayı gerektirmeyecek ve belirli bir iletişim kutusunun düğmelerini id yoluyla alabileceksiniz (uygulamanızda birden fazla varsa)

function getDialogButton( dialog_id, button_name) {
    var target = '#'+dialog_id;
    var buttons = $(target).parent().find('button');
    for ( var i=0; i<buttons.length; ++i ) {
        var jButton = $( buttons[i] );
        if ( jButton.text() == button_name ) {
              return jButton;
        }
    }
    return null;
} 

Diyaloğu şu şekilde oluşturduysanız:

$(function() {
    $("#myDialogBox").dialog({

      bgiframe: true, height: 'auto', width: 700, modal: true,
      buttons: {
        'Add to request list': function() {
                                     $(this).dialog('close');
                                     $('form').submit();
                               },
        'Cancel': function() {
                       $(this).dialog('close');
                  }
      }
});

Düğmeleri aşağıdakileri yaparak alabilirsiniz:

var addToRequestListBtn = getDialogButton('myDialogBox','Add to request list');
var cancelBtn           = getDialogButton('myDialogBox','Cancel');

Devre dışı bırakmak için:

addToRequestListBtn.attr('disabled', true).addClass( 'ui-state-disabled');
          cancelBtn.attr('disabled', true).addClass( 'ui-state-disabled');

Etkinleştirmek:

addToRequestListBtn.attr('disabled', false).removeClass( 'ui-state-disabled');
          cancelBtn.attr('disabled', false).removeClass( 'ui-state-disabled');

3

Sadece kayıt için, bu yazı sorunumu çözmeme yardımcı oldu. Kısacası, devre dışı niteliğini false olarak değil devre dışı olarak ayarlamanız gerekir:

_send_button.attr('disabled','disabled');

Tüm kod böyle görünüyor, ben de devre dışı görünmesini sağlamak için bazı stilleri ekledi:

var _send_button = $('.ui-dialog-buttonpane button:contains(Send)');
var original_text = _send_button.text();
_send_button.text('Please wait...');
_send_button.addClass('ui-state-disabled');
_send_button.attr('disabled','disabled');
_send_button.fadeTo(500,0.2);

3

Bence herkesle çalışmalı,

<script type="text/javascript">
    $(document).ready(function() {
        $('#dialog').dialog('open');
        $(function(){
            $('#dialog').dialog({
                autoOpen: true,
                width: 400,
                modal: true,
                overlay: {
                    opacity: 0.8,
                    background: "black"
                },
                resizable: false,
                show: 'slow',
                buttons: {
                    //"OK":function() {
                    //    window.location="index.php?view=list";
                    //},
                    "Cancel": function() {
                        $(this).dialog("close");
                        $(this).attr("class", "button");
                    }
                }
            });

            var dlgFirstButton = $('.ui-dialog-buttonpane').find('button:first');
            dlgFirstButton.addClass('button');
        });
    });
</script>

2

İletişim kutusundaki Kaydet düğmesini devre dışı bırakmak için işlevinizde aşağıdaki satırı kullanın.

$(".ui-dialog-buttonpane button:contains('Save')").attr("disabled", true).addClass("ui-state-disabled");

Bir düğmedeki metni değiştirmek için aşağıdaki satırı kullanın (bu, iptal düğmesi metnini Beni Kapat olarak değiştirir)

 $(".ui-dialog-buttonpane button:contains('Cancel') span").text("Close Me");

1

@Chris Onay kutusu onayla / işaretini kaldırılana kadar iletişim kutusu düğmelerini etkinleştirmek / devre dışı bırakmak için aşağıdaki kod satırlarını kullanabilirsiniz

<div id="dialog-confirm" title="test">
    <label>Enable Confirm?<input type="checkbox" checked /></label>
</div>

    $("#dialog-confirm").dialog({
    resizable: false,
    height:240,
    modal: true,
    buttons: {
        Cancel: function() {
            $(this).dialog('close');
        },
        'Confirm': function() {
            $(this).dialog('close');
        }
    }
});

    $("#dialog-confirm :checkbox").change(function() {
        $(".ui-dialog-buttonpane button:contains('Confirm')")
           .button(this.checked ? "enable" : "disable");
    });

Orijinal kaynak: http://jsfiddle.net/nick_craver/rxZPv/1/


1

.attr("disabled", true)Tabii ki çağırmak işe yarıyor, ama jQuery kullanarak bunu daha 'şeker' şekilde yapmak istiyorsunuz, bu yüzden basit bir uzantı yazdım:

(function( $ ) {
  $.fn.disable = function(isDisabled) {
    var val = isDisabled;
    if (isDisabled === undefined)
        val = true;
    this.attr("disabled", val);
  };
  $.fn.enable = function(isEnabled) {
    var val = !isEnabled;
    if (isEnabled === undefined)
        val = false;
    this.attr("disabled", val); 
  }
})( jQuery );

Artık işlevleriniz var enable()ve disable()işinizi şu şekilde yapabilirsiniz:

$('#continueButton').disable();

Hangi ile aynı

$('#continueButton').disable(true);

ve

$('#continueButton').enable(false);

1

Bu benim için işi yaptı:

$find("<%= btnPrint.ClientID %>").set_enabled(true);

1

JQuery dünyasında, bir DOM öğeleri kümesinden bir nesne seçmek istiyorsanız, eq () kullanmanız gerekir .

Örnekler:

var düğmesi = $ ('düğme'). eq (1);

veya

var düğmesi = $ ('düğmesi: eq (1)');


1

Belgelere göre :

https://api.jqueryui.com/dialog/#option-buttons

// Setter
$( ".selector" ).button( "option", "disabled", true );

Sadece düğmeyi seçebilmek için düğmeye etkinleştirilmesi / devre dışı bırakılması gereken kendi CSS sınıfını ekleyebilirsiniz.

// while initializing
$("#dialog").dialog({
...
buttons: [{
    disabled: true,
    text: "Add to request list",
    click: function (e: JQueryEventObject) {
        // Some logic
    },
    "class": "myDialogButton"
}]
...
});

Sonra etkinleştirme / devre dışı bırakma şöyle görünecektir:

$(".myDialogButton" ).button( "option", "disabled", (SOME_CONDITION) ? true : false);

0

Herhangi biri, bir düğmeyi tıklandığında yükleme animasyonu gibi bir şeyle değiştirmek istiyorsa (örneğin, "Gönder" düğmesi iletişim kutusundaki formu gönderdiğinde) - düğmeyi resminizle şu şekilde değiştirebilirsiniz:

...
buttons: {
    "Submit": function(evt) {
        $(evt.target).closest('button').replaceWith('<img src="loading.gif">');
    }
}

jQuery replaceDokümanlar ile


0

Bir düğmeyi devre dışı bırakmak için, iletişim kutusu açıldığında:

$("#InspectionExistingFacility").dialog({
    autoOpen: false, modal: true, width: 700, height: 550,
    open: function (event, ui) {
        $("#InspectionExistingFacility").parent().find(":button:contains('Next')").prop("disabled", true).addClass("ui-state-disabled");
    },
    show: { effect: "fade", duration: 600 }, hide: { effect: "slide", duration: 1000 },
    buttons: { 'Next step': function () { }, Close: function () { $(this).dialog("close"); } }
});
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.