Jquery 自动完成为 1 项显示 2 行而不是将其截断

Jquery Autocomplete show 2 lines for 1 item instead of cutting it off

我正在尝试使用 jQuery UI 的自动完成功能来显示数组中的一堆字符串,但其中一些字符串很长,因为它们的那一部分不在屏幕上.

现在我的问题是如何做到这一点,当我的一个字符串太长时,它不会离开屏幕,而是继续在不同的线上。

我试过在网上搜索一下,但我很难用正确的措辞来解决我的问题。

我的自动完成代码非常简单:

JS
$("#myInput").autocomplete({
    minLength: 1,
    source: arrayOfStrings
});

HTML
<div class="ui-widget">
    <input type="text" id="myInput"/>
</div>

所以要指定我想要的字符串是否太长而无法在屏幕上显示以占用 2 行而不是 1 行截断以便整个字符串可读。

您可以在 css 文件中尝试

.ui-menu .ui-menu-item {
    white-space: pre-wrap;
}

Marcos 很接近,但您需要将 white-space: pre-wrap;.ui-menu .ui-menu-item-wrapper 添加到您的 CSS 中,如下所示。当 运行 代码片段的演示时,键入字母 "t" 作为工作示例。

.ui-menu .ui-menu-item-wrapper {
    white-space: pre-wrap;
}

请参阅 MDN 中对 white-space: pre-wrap 的描述。

$( function() {
    var arrayOfStrings = [
        "This is a string",
        "This is another string",
        "This is a long string that should word wrap",
        "This is yet another that is long enough to word wrap",
        "This is a short string",
        "This is the last string"
    ];
    $("#myInput").autocomplete({
        minLength: 1,
        source: arrayOfStrings
    });
});
.ui-menu .ui-menu-item-wrapper {
    white-space: pre-wrap;
}

.ui-widget.ui-widget-content {
    width: 50px;
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" />
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<div class="ui-widget">
    <input type="text" id="myInput"/>
</div>