backbone-form:如何在彩色对话框中显示用于列表项编辑的jquery对话框?

时间:2012-01-23 14:34:45

标签: javascript jquery-ui backbone.js

我是大家, 我想我的问题是微不足道的,但我陷入困境,我需要分享我的怀疑。

我使用backbone.js和backbone-form(感谢Charles Davison创建这个伟大的工具)。

我在彩盒对话框中打开骨干表格,它运行正常。这是代码:

        [...]
        this.form=new Backbone.Form({
            data: json_infos.RI, //Data to populate the form with
            schema: self.getSchema(json_infos.RI)
            }).render();
        $(this.form.el).prepend("<center><b>"+self.renderIMG()+self.model.get('ri_name')+"</b></center>").append('<div id="updatebtn">OK, Save all Changes!</div>');
        $(this.form.el).delegate('#updatebtn','click',  this.saveRI);

        $.colorbox({
            html:self.form.el,
            transition: "elastic",
            speed:400,
            scrolling: true,
            width: "650px",
            height: "600px"
            });
        },

在这个包含表单的弹出框中我遇到了问题:当我想添加/删除/更新列表元素时,会打开另一个jquery对话框,但不在COLORBOX 。< / p>

我阅读了很多关于DOM遍历,选择器的jquery文档,并且我还个性化了我认为应该修改的代码,它位于jquery-ui-editors.js插件中,第348行,'openEditor'函数

    openEditor: function(data, callback) {
        var self = this,
            schema = this.schema,
            listType = schema.listType || 'Text';

        var editor = Form.helpers.createEditor(listType, {
            key: '',
            schema: schema,
            value: data,
         }).render();


        var container = $(this.editorTemplate());

        //~ $(self.el).append($('.bbf-list-editor', container).html(editor.el));
        $('.bbf-list-editor', container).html(editor.el);

        var close = function() {
            container.dialog('close');

            editor.remove();
            container.remove();
        };


        $(container).dialog({
            resizable:  false,
            modal:      true,
            width:      500,
            title:      data ? 'Edit item' : 'New item',
            buttons: {
                'OK': function() {
                    callback(editor.getValue());
                    close();
                }, 
                'Cancel': close
            }
        });
    },

在后面这段代码中,我不明白我们在哪里以及如何对javascript说“请在body标签下创建元素然后弹出”。

我确实需要打开它而不是在'body'上,而是在触发对话框的元素的父元素上打开它。

任何人都可以帮助我吗? 如果您需要更多细节,我很乐意添加它们。 提前谢谢。

------------ UPDATE ------------------

我使用z-index解决了这个问题,正如Sander所建议的那样。

必须修改z-index 不在CSS中,而是在打开弹出窗口的代码部分。所以只需添加

zIndex:     100000000, 

在jquery-ui-editors第371行的jquery-ui弹出选项中。

1 个答案:

答案 0 :(得分:0)

我使用z-index解决了这个问题,正如Sander所建议的那样。

必须修改z-index不在CSS中,而是在打开弹出窗口的代码部分。所以只需添加

zIndex:100000000, 在jquery-ui-editors第371行的jquery-ui弹出选项中。