Como desabilito um botão na caixa de diálogo jQuery UI . Não consigo encontrar isso em nenhuma documentação no link acima.
Eu tenho 2 botões na confirmação modal ("Confirmar" e "Cancelar"). Em certos casos, desejo desativar o botão "Confirmar".
jquery
jquery-ui
jquery-ui-dialog
leora
fonte
fonte
.button()
plug - in, então elas não são mais as melhores / mais limpas soluções.Respostas:
Se você estiver incluindo o
.button()
plug - in / widget que a jQuery UI contém (se você possui a biblioteca completa e está no 1.8+, você o possui), você pode usá-lo para desativar o botão e atualizar o estado visualmente, assim:Você pode experimentá-lo aqui ... ou, se você estiver em uma versão mais antiga ou não estiver usando o widget de botão, poderá desativá-lo assim:
Se você quiser dentro de uma caixa de diálogo específica, diga por ID e faça o seguinte:
Em outros casos em que
:contains()
pode dar falsos positivos, você pode usar.filter()
assim, mas é um exagero aqui, pois você conhece seus dois botões. Se esse for o caso em outras situações, seria assim:Isso impediria a
:contains()
correspondência de uma substring de outra coisa.fonte
$("#dialogID").nextAll(".ui-dialog-buttonpane").find("button:contains('Confirm')").attr("disabled", true).addClass("ui-state-disabled");
$(".ui-dialog-buttonpane button:contains('Confirm')").button("disable");
embora, se você deseja desativar o botão de uma função que você possui, é necessário widgetizar esse diálogo e desativar o botão depois; assim$(this).dialog("widget").find(".ui-dialog-buttonpane button:contains('Confirm')").button("disable");
Parece que qualquer pessoa, mesmo nesta pergunta vinculada , propôs esta solução, semelhante à primeira parte da resposta dada por Nick Craver:
Em outros lugares, você poderá usar a API para o botão da interface do usuário do jquery:
fonte
{text:"ok",disabled:true,click: function(){}}
$("#dialog").dialog("widget").find(".button-ok-class").button("enable")
Você também pode usar o atributo
nãodocumentado agoradisabled
:Para ativar após a abertura da caixa de diálogo, use:
JsFiddle: http://jsfiddle.net/xvt96e1p/4/
fonte
attr: { 'data-value' : 'some value here' }
se quiser adicionar o atributodata-value
ao botão.disabled
atributo deve ser atribuído ao criar os botões.Os seguintes trabalhos de dentro dos botões clicam na função:
fonte
Um botão é identificado pela classe
ui-button
. Para desativar um botão:A menos que esteja criando dinamicamente a caixa de diálogo (o que é possível), você saberá a posição do botão. Portanto, para desativar o primeiro botão:
A
ui-state-disabled
classe é o que dá a um botão esse belo estilo esmaecido.fonte
Eu criei uma função jQuery para facilitar essa tarefa. Provavelmente agora existe uma solução melhor ... de qualquer maneira, aqui estão meus 2 centavos. :)
Basta adicionar isso ao seu arquivo JS:
Desative o botão 'Ok' na caixa de diálogo com a classe 'dialog':
Ative todos os botões:
Ative o botão 'Fechar' e altere a cor:
Texto em todos os botões em vermelho:
Espero que isto ajude :)
fonte
fonte
Você pode substituir a matriz de botões e deixar apenas as necessárias.
fonte
esse código desabilita o botão com 'YOUR_BUTTON_LABEL'. você pode substituir o nome em contains (). desabilitar
substitua 'YOUR_BUTTON_LABEL' pela etiqueta do seu botão. para habilitar
fonte
Você pode fazer isso para desativar o primeiro botão, por exemplo:
fonte
O jeito que eu faço é
Cancel: function(e) { $(e.target).attr( "disabled","disabled" ); }
Esta é a maneira mais curta e fácil de encontrar.
fonte
Se você estiver usando o nocaute, isso é ainda mais limpo. Imagine que você tem o seguinte:
A mágica vem da fonte da interface do usuário do jQuery :
Basicamente, você pode chamar QUALQUER função de instância jQuery passando-a pelo objeto button.
Por exemplo, se você deseja usar HTML:
Ou, se você quiser adicionar uma classe ao botão (você pode fazer isso de várias maneiras):
Talvez você seja louco e queira remover o botão do dom quando estiver pairando:
Estou realmente surpreso que ninguém parece ter mencionado isso no número incontável de threads como este ...
fonte
Isso funcionou para mim -
fonte
Você pode desativar um botão ao criar a caixa de diálogo:
Ou você pode desativá-lo a qualquer momento após a criação da caixa de diálogo:
fonte