问问题
2383 次
5 回答
4
这不是很优雅但有效:
$("select").keydown(function(e){
e.preventDefault();
var elem = this;
elem.disabled=true;
setTimeout(function() { elem.disabled = false; }, 0);
});
问候。
于 2014-08-07T16:07:32.897 回答
1
这似乎在 Firefox 19 上对我有用。我假设您的意图是防止在用户输入值时通过键盘输入更改选择值。
$(document).ready(function() {
var valueToKeep;
$("#select").keypress(function (event) {
$(this).val(valueToKeep);
});
$("#select").keydown(function (event) {
event.preventDefault();
event.stopPropagation();
valueToKeep = $(this).val();
});
});
于 2013-02-28T17:46:22.520 回答
0
我假设您不希望在按下某个键时选择另一个选项。我相信这是特定于浏览器的实现,不会触发事件。您可能需要做的是使用常规元素和 jquery 构建自己的选择模仿。这可能会变得非常复杂,具体取决于您想要获得的疯狂程度,但这是一个小小的开始。
HTML:
<div class="imitateSelect>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
CSS:
.imitateSelect div{
display:none;
}
JS:
$('.imitateSelect div').first().show();
$('.imitateSelect div').on('click', function(){
$(this).siblings().slideDown();
});
等等等等
另一种选择是使用像Chosen这样的插件。看看他们做了什么。如果您删除输入栏,您将获得选择功能,并且按键不会更改所选选项。
于 2013-02-28T17:51:35.093 回答
0
关于 keydown 上的选择更改,请尝试在标签前添加实体­
(软连字符)。
这可能不是最优雅的解决方案,但可以解决问题。
于 2013-08-17T07:34:31.717 回答
0
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
</head>
<body>
<select id="select">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<script>
// working fine in PC and mobile
$('#select').on('focus', function() {
$(this).hide();
setTimeout(function(self) {
self.show();
}, 0, $(this))
});
</script>
</body>
</html>
于 2015-11-06T12:34:11.520 回答