最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Html "Select" tag should not open its "OPTIONS" on "Enter" bu

programmeradmin1浏览0评论
<select>
    <option></option>
    <option></option>
    <option></option>
</select>

I have a Select element, So usually when the control "focus" in in Select element and then we hit Enter Button so the OPTION is shown. So my issue is that I dont want to open it on Enter Press , I only want to open Select element throught Mouse click.

<select>
    <option></option>
    <option></option>
    <option></option>
</select>

I have a Select element, So usually when the control "focus" in in Select element and then we hit Enter Button so the OPTION is shown. So my issue is that I dont want to open it on Enter Press , I only want to open Select element throught Mouse click.

Share Improve this question edited Apr 11, 2018 at 12:51 CodingFriend asked Apr 11, 2018 at 12:23 CodingFriendCodingFriend 1491 silver badge13 bronze badges 5
  • 1 So what do you want to achieve? – Cuong Vu Commented Apr 11, 2018 at 12:25
  • select elememnt options only open on click, on control focus it is not opened. – vishu Commented Apr 11, 2018 at 13:08
  • @vishnu, do you want to stop the user to access the select tag using the keyboard or specifically "enter"? because using arrow keys will also open up the options – Rajnish Commented Apr 11, 2018 at 13:14
  • I want it to open only with mouse click but not with keyboard enter hit. – CodingFriend Commented Apr 11, 2018 at 13:25
  • Maybe there is some valid use case for this, but generally keyboard navigation is a must-have to all applications. A best practice is to always consider accessibility (e.g. ADA) – Pateta Commented Oct 25, 2021 at 22:27
Add a ment  | 

4 Answers 4

Reset to default 5

Note that keyboard accessibility is one of the core tenants of accessibility on the web. By disabling the ability for users to open selects you are rendering your UI unusable by people with disabilities who may not be able to use a regular mouse/trackpad.

Browsers do the right thing by default, please don't work against them!

Use Event.preventDefault() to prevent default action taken by browser, this should prevent the select element open when space or enter pressed.

vanilla js

document.querySelector("select").addEventListener("keypress", function(event) {
    event.preventDefault();
});

jQuery

$('select').keypress(function (e) {
    e.preventDefault();
})

You can listen to the keydown event and prevent the default action if the enter key is pressed. You can check if it's the enter key by checking the key, keyCode or which based on browser patibility.

e.g.

document
  .getElementById("select")
  .addEventListener("keydown", function(e) {
    if (e.key === "Enter" || (e.keyCode || e.which) === 13)
      e.preventDefault();
  });
<select id="select">
    <option>aaa</option>
    <option>bbb</option>
    <option>ccc</option>
</select>

If I understand your question what you think..., this may be the answer:

<html>
<head>
   <title>Single Listbox Select Element</title>
</head>
<body>
<select size="2" style="height:1.5em;width:3em">
   <option>1</option>
   <option>2</option>
   <option>3</option>
   <option>4</option>
   <option>5</option>
   <option>6</option>
</select>
</body>
</html>

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论