Select2.js - 搜索输入只允许数字
Select2.js - Search input to allow only numbers
我纠结了一天,可能真的很容易解决。
我想要的是搜索字段只接受数字,所以我尝试了这样的事情:
function onlyNumbers(){
$('.select2-search__field').on('keypress', function () {
$(this).val($(this).val().replace(/[^\d].+/, ""));
if ((event.which < 48 || event.which > 57)) {
event.preventDefault();
}
});
}
function select2(){
$(".select2From").select2({
tags: true,
placeholder: "de",
allowClear: true
});
$(".select2To").select2({
tags: true,
placeholder: "até",
allowClear: true
});
}
但这不起作用...实际上我什至无法到达 '.select2-search__field'
。不管是在按键上、在更改时、在单击时、在某事上...我只是想知道我怎样才能得到那个输入,所以我可以过滤输入的文本。
希望你能帮助我。谢谢!
对于动态生成的项目,将事件绑定到静态 DOM。
$(".select2").select2({
tags: true,
placeholder: "de",
allowClear: true
});
$(document).on('keypress', '.select2-search__field', function () {
$(this).val($(this).val().replace(/[^\d].+/, ""));
if ((event.which < 48 || event.which > 57)) {
event.preventDefault();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<select class='select2' style='min-width: 100px;'>
<option/>
<option>100</option>
<option>200</option>
<option>300</option>
</select>
我纠结了一天,可能真的很容易解决。
我想要的是搜索字段只接受数字,所以我尝试了这样的事情:
function onlyNumbers(){
$('.select2-search__field').on('keypress', function () {
$(this).val($(this).val().replace(/[^\d].+/, ""));
if ((event.which < 48 || event.which > 57)) {
event.preventDefault();
}
});
}
function select2(){
$(".select2From").select2({
tags: true,
placeholder: "de",
allowClear: true
});
$(".select2To").select2({
tags: true,
placeholder: "até",
allowClear: true
});
}
但这不起作用...实际上我什至无法到达 '.select2-search__field'
。不管是在按键上、在更改时、在单击时、在某事上...我只是想知道我怎样才能得到那个输入,所以我可以过滤输入的文本。
希望你能帮助我。谢谢!
对于动态生成的项目,将事件绑定到静态 DOM。
$(".select2").select2({
tags: true,
placeholder: "de",
allowClear: true
});
$(document).on('keypress', '.select2-search__field', function () {
$(this).val($(this).val().replace(/[^\d].+/, ""));
if ((event.which < 48 || event.which > 57)) {
event.preventDefault();
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js"></script>
<select class='select2' style='min-width: 100px;'>
<option/>
<option>100</option>
<option>200</option>
<option>300</option>
</select>