Как я могу заменить содержимое загрузочного ящика вызовом ajax?

Я новее здесь, и я немного говорю по-английски. Извините, если я буду писать с ошибками.

Я работаю с диалоговым окном bootbox и пытаюсь показать ответы ajax в том же модальном режиме, но не могу этого сделать. Кто-нибудь может помочь мне с этим? Как лучше всего это сделать?

У меня есть страница со ссылкой для входа. Когда кто-то нажимает туда, я показываю форму в диалоговом окне загрузки. В этой форме есть ссылка типа «Нет учетной записи? Нажмите здесь», и моя идея - показать другую форму в том же диалоговом окне загрузки.

Я пробовал это:

$(document).on({
    "show.bs.modal":function(e){
        if($(".bootbox.in ").size()>0){

            $(".bootbox.in ").removeData('bs.modal');
            e.preventDefault();
        }

        $(".bootbox.in").children(".modal-content")
       .html($(e.target).children(".modal-content").html());
 });

Большое спасибо за твою помощь!


person jrodriguez    schedule 27.02.2015    source источник


Ответы (1)


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

eg.

// Nifty function that converts a comment to a string
var HTMLstring = (function () {/*
    <div id="container">
        <h1>Title</h1>
        <div id="subcontainer">
            LOGIN FORM HERE
            <button id="createAccount"></button>
        </div>
    </div>
*/}).toString().match(/[^]*\/\*([^]*)\*\/\}$/)[1];
// Initialize bootbox with the above string
bootbox.dialog({
    message: HTMLstring,
    buttons:            
    {
        "danger" :
        {
            "label" : "Close",
            "className" : "btn-sm btn-danger",
            "callback": function() {

            }
        }
    }
});
// Here we attach the listeners to the above modal, to do what we want.
$('#createAccount').click(function() {
    createAccountHTML = 'This can be your html for create account form';
    $('#subcontainer').html(createAccountHTML);
});

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

person Matt    schedule 27.02.2015
comment
Спасибо за это, позвольте мне проверить. С этим я действительно ничего не меняю в bootbox. Я не думал об этом. - person jrodriguez; 04.03.2015