我无法阻止按键更改 Firefox 中的选定选项

发布于 2024-08-21 07:53:26 字数 913 浏览 5 评论 0原文

使用 Firefox 3.5.7

以下测试页面的行为应与 Opera、Safari 和 Chrome 类似。

按键(箭头或 1-5)不应产生任何效果(即应取消事件,以便数字永远不会从初始默认值“3”发生变化)。

[我也有单独的 IE 工作代码]。

非常感谢任何能让它发挥作用的人?

<html>  
    <head> 
        <title>Test</title>  
        <script type='text/JavaScript'>  
            function stop(evt)  
                {evt.preventDefault();  
                 evt.stopPropagation();  
                };  
        </script>  
    </head>  
    <body>  
        <select onkeydown='stop(event);' onkeypress='stop(event);'>  
            <option>1</option>  
            <option>2</option>  
            <option selected="selected">3</option>  
            <option>4</option>  
            <option>5</option>  
        </select>  
    </body>  
</html> 

Using Firefox 3.5.7

The following test page should behave like Opera, Safari and Chrome.

Key presses (arrows or 1-5) should have no effect (i.e. The events should be cancelled so that the number never changes from the initial default "3").

[I have separate working code for IE too].

Many thanks to anyone who can make it work?

<html>  
    <head> 
        <title>Test</title>  
        <script type='text/JavaScript'>  
            function stop(evt)  
                {evt.preventDefault();  
                 evt.stopPropagation();  
                };  
        </script>  
    </head>  
    <body>  
        <select onkeydown='stop(event);' onkeypress='stop(event);'>  
            <option>1</option>  
            <option>2</option>  
            <option selected="selected">3</option>  
            <option>4</option>  
            <option>5</option>  
        </select>  
    </body>  
</html> 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

我乃一代侩神 2024-08-28 07:53:27

这对我有用(看起来很邪恶,到目前为止我还没有在 FF 上找到任何其他解决方案):

<html>  
<head> 
    <title>Test</title>  
    <script type='text/JavaScript'>
        function stop(evt) {
          evt.preventDefault();
          var elem = document.getElementById('mysel');
          elem.blur();
          setTimeout('refocus()', 0);
        };
        function refocus() {
          document.getElementById('mysel').focus();
        }
    </script>  
</head>  
<body>  
    <select id="mysel" onkeydown="stop(event);">  
        <option>1</option>  
        <option>2</option>  
        <option selected="selected">3</option>  
        <option>4</option>  
        <option>5</option>  
    </select>  
</body>  

This works for me (looks pretty evil, I haven't found any other solution on FF so far):

<html>  
<head> 
    <title>Test</title>  
    <script type='text/JavaScript'>
        function stop(evt) {
          evt.preventDefault();
          var elem = document.getElementById('mysel');
          elem.blur();
          setTimeout('refocus()', 0);
        };
        function refocus() {
          document.getElementById('mysel').focus();
        }
    </script>  
</head>  
<body>  
    <select id="mysel" onkeydown="stop(event);">  
        <option>1</option>  
        <option>2</option>  
        <option selected="selected">3</option>  
        <option>4</option>  
        <option>5</option>  
    </select>  
</body>  

错々过的事 2024-08-28 07:53:27

@icktofay:这是一个演示问题的简化测试页。我在主代码中实际上所做的是将选择框的固有击键处理替换为显式操作。

@boxofrats:是的,这是邪恶的......但有效。谢谢。

@icktofay: This is a simplified test page demonstrating the problem. What I am actually doing in the main code is replacing the select-box's intrinsic keystroke handling with explicit actions.

@boxofrats: Yes, that is evil... but effective. Thanks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文