javascript - 下拉占位符分隔符
问题描述
我希望在我的select
下拉列表中有一个分隔符,例如:
<select name="season" class="season">
<option value="">Select season</option>
{% for season in search_item.get_seasons %}
<option value="{{ season }}">{{ season }}</option>
{% endfor %}
<option>---------------------------</option>
<option value="-1">I need to create a new season for this item</option>
</select>
有没有办法用最长选项的宽度创建一个值?例如,我希望--------
分隔线具有最长值的(近似)宽度。有没有办法做到这一点?
解决方案
是的,这是可能的,前提是您不介意在您的行中有一点“间距”。
考虑到您已经拥有search_item.get_seasons
,您可以.length
在每个项目上运行season
以找出哪个是最长的,方法是遍历每个项目并覆盖一个变量,如果当前项目有更长的.length
。从这里您可以简单地将.innerHTML
相关的<select>
设置为等于-
乘以该变量(现在包含.length
最长项目的)。我曾经.repeat()
报道过。
请注意,您需要使用等宽字体(例如 Courier)以获得最佳效果。
这可以在下面看到:
const items = [
"A season",
"A really, really long season",
"Short season"
];
let longest = 0;
for (let i = 0; i < items.length; i++) {
if (items[i].length > longest) {
longest = items[i].length;
}
}
const element = document.querySelector('.line');
element.innerHTML = "-".repeat(longest);
select {
font-family: Courier;
}
<select name="season" class="season">
<option value="">Select season</option>
<option value="">A season</option>
<option value="">A really, really long season</option>
<option value="">Short season</option>
<option class="line"></option>
<option value="-1">I need to create a new season for this item</option>
</select>
推荐阅读
- android - Volley 库没有在 Android 应用程序中获取 Magento 会话值
- ios - Swift.h 文件未找到 CocoaPods 1.5.3
- symfony - 在另一个服务中注入一个服务
- google-chrome - 无法在 chrome 浏览器上解码媒体问题
- android - React-Native 中带有实心阴影的文本
- rest - MSGraph API 的代理
- c++ - Arm g++ 交叉编译器错误
- r - 按列填充 R 中的空 data.table
- angular - Angular 5:如何解决 Internet Explorer 11 上的“未定义标题”错误?
- android - 保存 Firestore 对象会引发 InvocationTargetException 错误