如何在IE中的下拉列表上禁用翻转/滚动

时间:2016-12-16 08:12:22

标签: javascript html css

Plnkr链接 - LINK

重现问题的步骤 -

  1. 在IE浏览器中打开plnkr链接
  2. 从下拉列表中选择一个值
  3. 将鼠标悬停在下拉列表上并使用鼠标滚动
  4. 问题 - 选定的下拉列值将在滚动时开始更改。

    预期行为 - 选定的下拉列值不应更改,但整个页面应滚动。

    注意 -

    1. 此问题不在Chrome中,仅在IE中。
    2. 只有在选择值并将鼠标悬停在下拉字段上后,下拉列值才会更改。
    3. 我的代码:

              add_action( 'init', 'codex_book_init' );
              /**
               * Register a book post type.
               *
               * @link http://codex.wordpress.org/Function_Reference/register_post_type
               */
              function codex_book_init() {
                  $labels = array(
                      'name'               => _x( 'news', 'post type general name', 'your-plugin-textdomain' ),
                      'singular_name'      => _x( 'news', 'post type singular name', 'your-plugin-textdomain' ),
                      'menu_name'          => _x( 'news', 'admin menu', 'your-plugin-textdomain' ),
                      'name_admin_bar'     => _x( 'news', 'add new on admin bar', 'your-plugin-textdomain' ),
                      'add_new'            => _x( 'Add New', 'news', 'your-plugin-textdomain' ),
      
                  );
      
                  $args = array(
                      'labels'             => $labels,
                              'description'        => __( 'Description.', 'your-plugin-textdomain' ),
                      'public'             => true,
                      'publicly_queryable' => true,
                      'show_ui'            => true,
                      'show_in_menu'       => true,
                      'query_var'          => true,
                      'rewrite'            => array( 'slug' => 'news' ),
                      'capability_type'    => 'post',
                      'has_archive'        => true,
                      'hierarchical'       => false,
                      'menu_position'      => null,
                      'supports'           => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
                  );
      
                  register_post_type( 'news', $args );
              }
      

      更新 -

      尝试以下 -

      <!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>
      

      但是当用户选择相同的值(先前选择的值)时,不会触发onChange。

3 个答案:

答案 0 :(得分:2)

这似乎禁用了它:

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

适用于IE6 +,但我担心此版本不支持此事件。

答案 1 :(得分:0)

尝试了各种选项,最后为同一个编写了angularjs指令 -

guthub link - angular select

使用element[0].blur();删除select标记的焦点。逻辑是在第二次下拉时触发此模糊。

即使用户在下拉列表中选择了相同的值,

as-select也会被触发。

DEMO - link

答案 2 :(得分:0)

这对我很有效:

<select onmousewheel="return false">

对于IE6及更高版本应该是好的。这似乎比onchange更好,因为即使您选择相同的值,它也会阻止滚动。