我使用用户脚本(Greasemonkey/TamperMonkey),<input>
如果选择了一个元素,我需要在我的下拉列表中添加一个。
这是一种使我的<select>
动态和交互的方式,以便用户可以自己添加项目。
我想从视觉上看,用户的印象<input>
是<option>
.<select>
我发现这样做的唯一方法是减小宽度<select>
并显示<input>
.
HTML:
<input style='display:none'></input>
<select id='my_select' style='width:150px'>
<option>Test 1</option>
<option>Test 2</option>
<option>Test 3</option>
<option>Make me feel input</option>
</select>
脚本:
$('#my_select').change(function() {
var choosen = $("select option:selected").text();
if (choosen == 'Make me feel input') {
$('input').attr('style','width:125px;border-right:0px');
$('select').attr('style','width:24px;margin-left:-4px;border-left:0px')
}
else {
$('input').attr('style','display:none');
$('select').attr('style','width:150px');
}
});
结果很不错,你可以在 jsFiddle 上试试。
不幸的是,由于border-left:0px
和border-right:0px
外观完全丢失,输入和选择的样式变得难看。
(火狐)
此外,最终外观取决于所使用的浏览器。例如,对于 Chrome,会发生以下情况:
所以我希望我配置我的 input-select 以使它看起来不错,无论浏览器如何。是否可以使用 CSS 和 JavaScript 模拟 Firefox 给出的外观?
当然,我考虑过使用 Chosen、SelectBoxIt 或 Select2 之类的插件,但我认为它们与我的 input-select 不兼容(例如,因为宽度调整大小)。
请问你能帮帮我吗?