3

Plnkr link - LINK

Steps to reproduce issue -

  1. Open the plnkr link in IE
  2. select a value from dropdown
  3. hover over the dropdown and scroll with mouse

Issue -- the selected dropdown value will start changing on scroll.

Expected behaviour - the selected dropdown value should not change but the whole page should scroll.

Note -

  1. this issue is not there in chrome, only in IE.
  2. the dropdown value will change only after selecting a value and hovering over the dropdown field.

My code:

<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" href="style.css">
    <script src="script.js"></script>
  </head>

  <body>
    <div id="wrap">
      <select>
          <option>foo</option>
          <option>bar</option>
          <option>baz</option>
          <option>foo</option>
          <option>bar</option>
          <option>baz</option>
          <option>foo</option>
          <option>bar</option>
          <option>baz</option>
          <option>foo</option>
          <option>bar</option>
          <option>baz</option>
          <option>foo</option>
          <option>bar</option>
          <option>baz</option>
          <option>foo</option>
          <option>bar</option>
          <option>baz</option>
          <option>foo</option>
          <option>bar</option>
          <option>baz</option>
          <option>foo</option>
          <option>bar</option>
          <option>baz</option>
      </select>
    </div>
    <div>
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbage garbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    garbagegarbagegarbagegarbagegarbagegarbagegarbagegarbage
    </div>
  </body>

</html>

Update --

Tried the below -

<select onChange="if (this.selectedIndex) self.focus();">

But onChange is not triggered when the user selects the same value (previously selected value).

Nithin Kumar Biliya
  • 2,763
  • 3
  • 34
  • 54
  • 1
    What have you done to try and solve this? It's good practice to show your code here, and you cheated by formatting "Code in the link" as code. Plunks are not permanent, and without that, this question has no meaning – Mikkel Dec 17 '16 at 13:35
  • Don't try to cheat the system. If it wants you to put your code in the question just do it. – jwpfox Dec 17 '16 at 21:13
  • you got a giggle out of me for "garbage garbage garbage...." – Jhecht Dec 19 '16 at 06:13
  • cannot reproduce on IE11 – Type-Style Dec 22 '16 at 08:31
  • 1
    i have tested on IE11. I am having the issue. Select a value in dropdown. Click on dropdown again and select the same value. Then hover over the dropdown and scroll with mouse, the selected value changes. – Nithin Kumar Biliya Dec 22 '16 at 10:01

3 Answers3

2

This seems to disable it:

<select onChange="if (this.selectedIndex) self.focus();">

Works on IE6+, but I'm afraid this event is not supported in versions below that.

2

This worked great for me:

<select onmousewheel="return false">

Should be good for IE6 and above. This seems to work better than onchange because it will prevent scrolling even if you select the same value.

Son Ha
  • 141
  • 1
  • 3
0

Tried various options and ended up writing a angularjs directive for the same -

guthub link - angular select

Used element[0].blur(); to remove the focus off the select tag. Logic is to trigger this blur on second click of the dropdown.

as-select gets triggered even when user selects the same value in the dropdown.

DEMO - link

Nithin Kumar Biliya
  • 2,763
  • 3
  • 34
  • 54