У меня есть набор элементов select2, и моя функция hideSelect2Keyboard()
используется для скрытия клавиатуры при открытии и закрытии select2.
/* Hide keyboard on select2 open event */
function hideSelect2Keyboard(){
$('.select2-search input, :focus,input').prop('focus',false).blur();
}
$("select").select2().on("select2-open", hideSelect2Keyboard);
$("select").select2().on("select2-close",function(){
setTimeout(hideSelect2Keyboard, 50);
});
Работает нормально;однако эта функция нацелена на все элементы select в целом, что вызывает у меня проблемы, поскольку некоторые элементы имеют свои собственные обработчики событий onchange
и onblur
, которые они запускают непреднамеренно.
Поэтому я хочу нацелить свою функциюhideSelect2Keyboard
только для выбора элемента, по которому щелкают.
// hide keyboard after select value and drop down list open
function hideSelect2Keyboard(ID){
$('#'+ID+' .select2-search input, #'+ID+' :focus, #'+ID+' input').prop('focus',false).blur();
}
$("select").select2().on("select2-open", hideSelect2Keyboard(this.id));
$("select").select2().on("select2-close",function(){
setTimeout(hideSelect2Keyboard(this.id), 50);
});
$("#Gender").select2().on('select2-blur', function() {
alert('gender selected');
});
/* Hide keyboard on select2 open event */
function hideSelect2Keyboard() {
$('.select2-search input, :focus,input').prop('focus', false).blur();
}
$("select").select2().on("select2-open", hideSelect2Keyboard);
$("select").select2().on("select2-close", function() {
setTimeout(hideSelect2Keyboard, 50);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/3.4.5/select2.min.js"></script>
<label for="Salutation">Salutation:</label>
<select class="" name="" id="Salutation">
<option value="Mrs">Mrs</option>
<option value="Mr">Mr</option>
<option value="Miss">Miss</option>
</select>
<label for="Gender">Gender:</label>
<select class="" name="" id="Gender">
<option value="Female">Female</option>
<option value="Male">Male</option>
<option value="Transgender">Transgender</option>
</select>
Тогда это больше не работает, и в консоли также нет ошибок.Что не так, как я могу настроить таргетинг на конкретный элемент и применить функцию hideSelect2Keyboard
?Благодаря.