从动态(AJAX)加载的引导模式返回数据

从动态(AJAX)加载的引导模式返回数据,ajax,jquery,twitter-bootstrap,modal-dialog,Ajax,Jquery,Twitter Bootstrap,Modal Dialog,我在Codeigniter应用程序中使用引导模式作为弹出的WYSIWYG文本编辑器。关于加载内容和模式的一切都很好。当model通过AJAX打开时,我甚至可以保存内容 但我想完成的是当我在模式中点击“保存”按钮时。。。我想将值-$('#wysiwyg').val()-返回到打开模式的页面 触发模式的链接 <a href="/ajax/modals/wysiwyg" class="btn ajax-modal">Write Text</a> HTML模式包装器 <d

我在Codeigniter应用程序中使用引导模式作为弹出的WYSIWYG文本编辑器。关于加载内容和模式的一切都很好。当model通过AJAX打开时,我甚至可以保存内容

但我想完成的是当我在模式中点击“保存”按钮时。。。我想将值-
$('#wysiwyg').val()
-返回到打开模式的页面

触发模式的链接

<a href="/ajax/modals/wysiwyg" class="btn ajax-modal">Write Text</a>
HTML模式包装器

<div id="ajax-modal" class="modal hide fade" data-backdrop="static" data-keyboard="false" tabindex="-1"></div>

HTML模式正文/内容

<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
    <h3>Text Editor</h3>
</div>
<div class="modal-body">

    <textarea class="input-block-level" id="wysiwyg" rows="9">Write something...</textarea>

</div>
<div class="modal-footer">
    <button class="btn btn-link" data-dismiss="modal" aria-hidden="true">Cancel</button>
    <button id="submit-modal" class="btn btn-success">Save</button>
</div>

&时代;
文本编辑器
写点什么。。。
取消
拯救

提前谢谢。

我想我明白你的要求了……有几种方法可以做到这一点。如果您想创建一个更独立的方法,可以使用一个pub/sub框架,比如Amplify。最简单的方法是在创建单击事件之前创建对要填充的元素的引用。像这样:

var controlToPopulate = $("#controlToPopulateId");
$('.ajax-modal').click(function(e) {

e.preventDefault();

var modal = $('#ajax-modal');
var url = $(this).attr('href');

if(url.indexOf('#') == 0) {
    $(url).modal('open');
} else {
    $.get(url, function(data) {
        modal.html(data);
        modal.modal();
    }).success(function() { 
        /* boom. loaded. */
        modal.find('#submit-modal').click(function() {
           controlToPopulate.val(modal.find('#wysiwyg').val());
       });
    });
}

}))

我想我明白你的要求了……有几种方法可以做到这一点。如果您想创建一个更独立的方法,可以使用一个pub/sub框架,比如Amplify。最简单的方法是在创建单击事件之前创建对要填充的元素的引用。像这样:

var controlToPopulate = $("#controlToPopulateId");
$('.ajax-modal').click(function(e) {

e.preventDefault();

var modal = $('#ajax-modal');
var url = $(this).attr('href');

if(url.indexOf('#') == 0) {
    $(url).modal('open');
} else {
    $.get(url, function(data) {
        modal.html(data);
        modal.modal();
    }).success(function() { 
        /* boom. loaded. */
        modal.find('#submit-modal').click(function() {
           controlToPopulate.val(modal.find('#wysiwyg').val());
       });
    });
}

}))

当您编写
if(url.indexOf('#')==0)
时,您的意思是
if(url.indexOf('#')==1)
indexOf(“#”)
如果字符串中没有出现
#
,则返回
-1

当您编写
if(url.indexOf(“#”)==0)
时,您的意思是
if(url.indexOf(“#”)=-1)
<如果字符串中没有出现
#
,code>indexOf(“#”)将返回
-1

您可以尝试以下操作:

var modal = $('#ajax-modal');

// Filter clicks within the modal to those on the save button (#submit-modal)
modal.on('click', '#submit-modal', function(e) {

    // Find the wysiwyg within the modal        
    var wysiwyg = $('#wysiwyg', modal);

    // Now do what you want with wysiwyg.val();
    if (wysiwyg.length) $('#my_info_div').html(wysiwyg.val());
});

您可以尝试以下方法:

var modal = $('#ajax-modal');

// Filter clicks within the modal to those on the save button (#submit-modal)
modal.on('click', '#submit-modal', function(e) {

    // Find the wysiwyg within the modal        
    var wysiwyg = $('#wysiwyg', modal);

    // Now do what you want with wysiwyg.val();
    if (wysiwyg.length) $('#my_info_div').html(wysiwyg.val());
});

不,我写对了。我检查
0
的原因是,如果模式内容是内联的,而不是通过URL调用,那么它应该以默认方式加载模式(如所有引导示例所示)。不,我写的是正确的。我检查
0
的原因是,如果模式内容是内联的,而不是通过URL调用,那么它应该以默认方式加载模式(如所有引导示例所示)。这在我的模式中进行吗?或者在触发模式的页面上?这在托管#ajax模式容器的页面上(也就是触发模式的页面)。这在我的模式中吗?或者在触发模式的页面上?这会出现在托管#ajax模式容器的页面上(也就是触发模式的页面)。感谢您的回答。它确实有效,但我选择了另一个答案,因为它与我的一些其他代码集成得更好。谢谢你的答案。它确实有效,但我选择了另一个答案,因为它与我的一些其他代码集成得更好。