2016-06-08 4 views
0

Я не могу найти много информации о Bootbox, я надеялся, что могу отключить кнопку поиска, если она недействительна. Два элемента на модальном, нужно предоставить. Я бы подумал, что это будет парм под названием disabled и т. Д., С которым вы могли бы пройти логику, но код ниже не работает. Я что-то упускаю, похоже, это основное требование.Bootbox - Disable BUtton

search(){   
    bootbox.dialog({ 
     title: "Search Options", 
     message: jQuery('#searchCriteria').html(), 
     buttons: { 
      cancel: {      
       label: 'Cancel', 
       className: 'btn btn-default' 
      }, 
      confirm: { 
       disabled: this.canSearch(), 
       label: 'Search', 
       className: 'btn-primary btn btn-info', 
       callback: function() { 
        this.searchOptions("test","1"); 
        } 
       } 
      }, 
     } 
    }); 
} 
+0

только 'disabled' не работает? и все остальное в порядке? – Shaharyar

+0

Да, я догадался об инвалидах, так как я думал, что у них это как парм. Но кнопка не серая. Ive попытался отключить: true, отключено «true», отключено: «true», отключено: 1. Чтобы узнать, не является ли его логика в canSearch(), однако они ничего не делают. –

+0

К сожалению, в 'bootbox' нет такого параметра. Его opensource, который вы можете редактировать, для этого. – Shaharyar

ответ

0

Мне уже приходилось делать что-то подобное раньше. Я выполнил его, используя функцию init, чтобы применить «наблюдателя» к форме, которую я ввел в диалог.

var dialog = bootbox.dialog({ 
    message: $('#my-template').html(), 
    buttons: { 
     cancel: { 
      label: 'Cancel', 
      callback: function(){ dialog.modal('hide'); } 
     }, 
     submit: { 
      label: 'Submit', 
      className: 'submit-form btn-primary', 
      callback: function() { 
       // ... submit form via ajax? 
      } 
     } 
    } 
    // ... the rest 
}); 

dialog.init(function(){ 
    var formID = '#my-form'; 

    $(formID) 
     .on('change input', '.form-control', function(e){ 
      checkFormAndEnable(formID); 
     }) 
     .on('submit', function(e){ 
      e.preventDefault(); 
     }); 
}); 

function checkFormAndEnable(selector) { 
    var form = $(selector); 

    var count = form.find('input[type!=hidden]').length; 
    var emptyCount = form.find('input[type!=hidden]').filter(function() { 
     return $.trim(this.value) !== ""; 
    }).length; 

    var canValidate = count == emptyCount; 
    if (canValidate) { 
     dialog.find('.submit-form').prop({ 'disabled': !form.valid() }); 
    } 
    else { 
     dialog.find('.submit-form').prop({ 'disabled': true }); 
    } 
} 

Предполагается, что вы используете jQuery Validate. Если нет, вы замените !form.valid() тем, что вы используете для проверки ваших входов. Вы также можете заменить init на .on('shown.bs.modal'), особенно если форма отображается несколько раз (init, кажется, только когда-либо вызывается один раз).

+0

Thats, плохо смотрю в нее :-) –