Как я могу отключить кнопку в диалоговом окне jQuery от функции?

1122 Не совсем понятно, в чем проблема. Итак, вот несколько вариантов, которые стоит рассмотреть, если вы еще не попробовали их:

  • Проверьте, что Payola mount издана в config/routes.rb. Это должно выглядеть следующим образом:

    mount Payola::Engine => '/payments', as: :payments

  • Проверьте фоновые задания, которые выполняются, и просмотрите очереди заданий, чтобы увидеть, стоят ли какие-либо задания, связанные с payola, в очереди. [1 125]

  • Убедитесь, что payola.rb находится в config/initializers/

  • Полностью перезапустите приложение и Spring в любое время, когда вы измените config/initializers/payola.rb, запустив bin/spring stop; bin/rails server

    [1118 ]
  • Проверьте любую конфигурацию StripeEvent во всем приложении на наличие неожиданностей. Аналогично для любого Payola конфига.

  • Обновите вызовы Payola.subscribe для config.subscribe в файле payola.rb, приведенном выше.

  • Только в вашей среде разработки отлаживайте гем payola, добавляя свой собственный код в источник самоцвета payola-payment в любых интересующих вас точках. Найдите его местоположение, запустив bundle show payola-payments, а затем откройте каталог, напечатанный в вашем редакторе кода. Вы можете внести изменения в любой из файлов в гем, чтобы помочь отладке. Каждый раз, когда вы вносите изменения в этот драгоценный камень, вам нужно будет сделать полный перезапуск, чтобы получить последние изменения: bin/spring stop; bin/rails server. Как только вы закончите отладку, верните гем в его первоначальное состояние без изменений, запустив bundle exec gem pristine payola-payments.

  • [Тысяча сто тридцать одна]
236
задан twernt 7 February 2016 в 14:49
поделиться

12 ответов

Вы хотели бы установить отключенное Обновление свойства

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

: Ahha, я вижу сложность теперь. Диалоговое окно jQuery имело одну строку, которая будет полезна (под разделом "кнопок".

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

необходимо будет заставить набор кнопок от диалогового окна, цикла через это находить, в каком Вы нуждаетесь и затем устанавливаете отключенный атрибут, когда я показал выше.

257
ответ дан Shiva Saurabh 23 November 2019 в 03:26
поделиться

Я нашел обходное решение, которое может относиться к людям, пытающимся сделать что-то подобное. Вместо того, чтобы отключить кнопку я поместил простое if оператор в функции, чтобы проверить, был ли флажок проверен.

, Если это не было, это отобразило простое сообщение, говоря, что флажок должен был быть установлен перед представлением.

, Например:

$("#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");
            }
        }
    }
});

Так или иначе, я надеюсь, что это помогает кому-то.

4
ответ дан Peter Mortensen 23 November 2019 в 03:26
поделиться

Это отключает кнопку:

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

Вы должны добавить идентификатор диалога, если у вас есть несколько диалогов на странице.

19
ответ дан 23 November 2019 в 03:26
поделиться

С точки зрения удобства использования, обычно лучше оставить кнопку включенной, но отображать сообщение об ошибке, если кто-то пытается отправить неполную форму. Меня сводит с ума, когда кнопка, которую я хочу нажать, отключена, и я не знаю почему.

8
ответ дан 23 November 2019 в 03:26
поделиться

Just for the record, this post helped me to solve my problem. In short words, you have to set the disabled attribute to disabled, not to false:

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

This is how all the code looks, I also added some styles to make it look disabled:

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
ответ дан 23 November 2019 в 03:26
поделиться

Вот моя функция enableOk для диалогового окна jQuery:

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

«Первая» кнопка - крайняя справа. Вы оба отключаете кнопку и устанавливаете отключенный класс диалога для правильного визуального эффекта.

5
ответ дан 23 November 2019 в 03:26
поделиться

Я хотел найти кнопку по имени (поскольку у меня есть несколько кнопок в диалоговом окне jQuery UI). У меня также есть несколько диалогов на странице, так что мне нужен способ получить кнопки определенного диалога. Вот моя функция:

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' );
}
29
ответ дан 23 November 2019 в 03:26
поделиться

Это очень просто:

$(":button:contains('Authenticate')").prop("disabled", true).addClass("ui-state-disabled");
191
ответ дан 23 November 2019 в 03:26
поделиться

Если вы действительно хотите отключить кнопку, я обнаружил, что необходимо также вызвать для нее метод .unbind(). В противном случае кнопка может оставаться активной, и двойное нажатие может привести к многократному отправлению формы. У меня работает следующий код:

button = $(this).parent().find("button:contains('OK')");
button.unbind();
button.addClass('ui-state-disabled');
4
ответ дан 23 November 2019 в 03:26
поделиться

Я думаю, это должно работать со всеми,

<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>
3
ответ дан 23 November 2019 в 03:26
поделиться

Я нашел простой способ отключить (или выполнить любое другое действие) кнопку диалогового окна.

    var dialog_selector = "#myDialogId";

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

Вы просто выбираете родительский элемент вашего диалога и находите все кнопки. Затем, проверив текст вашей кнопки, вы можете идентифицировать свои кнопки.

8
ответ дан 23 November 2019 в 03:26
поделиться

можно просто добавить идентификатор к кнопке, это не находится в документе, но это работает.

$().dialog(buttons:[{id:'your button id'....}]);

затем в Вашей функции просто используют

$('#your button id') 

для отключения его.

0
ответ дан 23 November 2019 в 03:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: