使用jQuery-Chosen时,Fancybox的内容大小是错误的?

时间:2013-08-26 08:13:00

标签: javascript jquery fancybox jquery-chosen

我有一个Fancybox弹出窗口,它使用AJAX来获取内容。

获取的html是div,包含标题,带输入字段的表格和一些按钮。

问题是,我得到额外的填充,或者太小的尺寸;反正我有不必要的滚动条。我可以使用CSS的overflow或Fancybox的scrolling属性完全禁用它们,但我不希望它们完全禁用 - 只在必要时添加。

我正在使用jQuery Chosen插件,这是造成溢出的原因;我怎么能避免这个?

div内容由客户端修改,因为它们可以动态添加/删除行 - 所以我需要滚动条出现以防用户添加太多行以适应屏幕。到目前为止发生了什么:

scrollbars

这有什么问题?这是我的CSS:

#filter-form {
    width: 550px;
}
#filter-form h2 {
    text-align: center;
}
#filter-form .chzn-results {
    max-height: 110px;
}
#filter-form .buttons {
    margin-top: 10px;
    overflow: hidden;
}
#filter-form .buttons .btn_save_filter {
    float: right;
}
#assoc-num, #assoc-string {
    display: none;
}

#filter-form #CustomUserFilters_title {
    width: 350px;
    display: block;
    margin: 0 auto 30px;
}
#add-new-row td {
    text-align: right;
}
#add-new-row button {
    display: inline;
}
#filter-rules, #filter-form .buttons {
    width: 500px;
    margin: 0 auto;
}
#filter-rules td {
    width: 25% !important;
}

宽度设置并不重要 - 删除它们或增加它们仍然会导致它们 - 所以它不是Fancybox的自动调整功能,它认为内容更小 - 它总是调整所需的量,减去一些导致溢出的像素。

这是HTML(大混乱,我知道):

<div id="filter-div">
<form action="/customUserFilters/create" id="filter-form">
<h2>Create Filter</h2>
<input placeholder="Filter name" type="text" value="" name="CustomUserFilters[title]" id="CustomUserFilters_title"><table id="filter-rules">
    <tbody><tr class="filter-row">
<td class="td-bool-op"></td>
<td class="td-field-id"><select id="" style="width: 150px;" name="CustomUserFilterSettings[][field_id]">
<option value="2">Name</option>
</select></td>
<td class="td-assoc"><select style="width: 100px;" name="CustomUserFilterSettings[][assoc]">
<option value="=">=</option>
</select></td>
<td class="td-value"><input type="text" value="" name="CustomUserFilterSettings[][value]" id="CustomUserFilterSettings_value"></td></tr>    <tr id="new-filter">

<td class="td-bool-op"><select id="" style="width: 60px;" name="CustomUserFilterSettings[][bool_op]">
<option value="AND" selected="selected">AND</option>
<option value="OR">OR</option>
</select></td>
<td class="td-field-id"><select id="" style="width: 150px;" name="CustomUserFilterSettings[][field_id]">
<option value="2">Name</option>
</select></td>
<td class="td-assoc"><select style="width: 100px;" name="CustomUserFilterSettings[][assoc]">
<option value="=">=</option>
</select></td>
<td class="td-value"><input type="text" value="" name="CustomUserFilterSettings[][value]" id="CustomUserFilterSettings_value"></td>    </tr>
    <tr id="add-new-row">
        <td colspan="4">
            <button id="add-new-row-button" class="btn_grey" name="yt0" type="button">+ Add Another Condition</button>        </td>
    </tr>
</tbody></table>
<div class="buttons">
    <button class="btn_orange btn_save_filter" name="yt1" type="button">Create Filter</button>    <button class="btn_grey btn_cancel_filter" name="yt2" type="button">← Cancel</button></div>
</form>

这是Fancybox init:

$('#new_filter_button').fancybox({
    beforeLoad: function() {
        $('.qtip').hide();
    },
    type: 'ajax',
    href: window.baseUrl + '/customUserFilters/create',
    openEffect: 'fade',
    closeEffect: 'fade',
    wrapCSS: 'filters-box'
});

1 个答案:

答案 0 :(得分:0)

嗯,事实证明, Fancybox隐藏了内容泛滥。

由于我使用的是jQuery Chosen Plugin ,即使关闭这些框,他们的容器仍然只在页面中隐藏 - 这导致div高于它应该的,但对于某些原因Fancybox不仅仅导致对话框更大,因为下拉列表被隐藏了,它出于某种原因将它排除在高度之外,尽管它仍然占据了垂直空间。然后水平滚动条从对话框中获取宽度并导致宽度溢出,这是导致垂直滚动条的原因。

该死!希望这个答案可以帮助其他人遇到这个问题