我有一个Bootstrap-Select下拉列表,在将某个字符串输入文本输入时从另一个源填充。一切正常,默认情况下选择第一个选项,我想阻止这一点,所以用户必须选择一个选项。
请在此处查看演示:https://jsfiddle.net/moxxah8r/
代码如下:
<style>
.form-control,
.selectpicker {
width: 220px;
}
#postalcode {
text-transform: uppercase;
margin-right: 10px;
}
</style>
<div style="padding: 10px;">
<div style="display: flex;">
<input name="postalcode" id="postalcode" type="text" class="form-control" autocomplete="postal-code">
<select name="address" id="address" class="selectpicker" disabled>
<option value="0" selected> </option>
</select>
</div>
</div>
<script>
var data = ["1 Street Name", "2 Street Name", "3 Street Name", "4 Street Name", "5 Street Name"];
$('#postalcode').on('input', function(e) {
var pattern = new RegExp('^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$');
var text = $('#postalcode').val().toUpperCase();
if (pattern.test(text)) {
$('#address').empty();
$.each(data, function(i, value) {
$('#address').append($('<option>').text(value).attr('value', value));
});
$('#address option').prop('selected', false);
$('#address').prop('disabled', false);
$('#address').selectpicker('refresh');
} else {
$('#address').empty().append('<option value="0" selected> </option>');
$('#address').prop('disabled', true);
$('#address').selectpicker('refresh');
}
});
</script>
答案 0 :(得分:2)
您需要做的第一件事是从预定义的selected
中移除<option>
,因为这会在设计时产生问题,而不是默认情况。
为什么不使用Bootstrap Select的一些内置功能,而不是依赖空白<option>
黑客?通过在title
元素中指定<select>
,您可以创建伪占位符。这样可以防止默认情况下选择下拉菜单中的第一项:
<select name="address" id="address" class="selectpicker" title="Make Your Selection" disabled>...</select>
您可以在Bootstrap Select的自定义按钮文本文档中了解此功能以及其他一些标签选项
https://silviomoreto.github.io/bootstrap-select/examples/#placeholder
答案 1 :(得分:0)
你可以用jQuery做到这一点。删除所有空白选项标记,并在您的活动中调用此标记:
$('select#address').val([]);