代码之家  ›  专栏  ›  技术社区  ›  mkoryak

不允许在输入元素内选择

  •  2
  • mkoryak  · 技术社区  · 14 年前

    我想做以下工作

    • 不允许在输入元素内选择文本
    • 不要在输入中显示光标胡萝卜

    我不能简单地模糊点击输入,焦点必须留在输入。可能有一种方法可以做到这一点,只是在IE中,我当然宁愿有一个跨浏览器的解决方案,但我会满足于只使用IE(或FF)的解决方案。

    下面是一个演示页面,您可以看到我为什么需要此功能:

    http://programmingdrunk.com/current-projects/dropdownReplacement/

    如果你点击页面第一行的下拉列表,你会看到下拉列表中的胡萝卜,看起来很有趣。(这不会在Chrome中发生,但会在FF或IE中发生)

    3 回复  |  直到 14 年前
        1
  •  2
  •   npup    14 年前

    有点黑,但是:

    onclick="this.selectionStart=this.selectionEnd=-1;"
    onselect="this.selectionStart=this.selectionEnd=-1;"
    

    似乎可以在火狐(3.6.3)中使用。

    不过,请大家帮个忙,把它藏起来不让HTML看到( attachEvent 魔术)不要告诉任何人我建议了这个:)

        2
  •  2
  •   cryo    14 年前

    我在代码中使用了以下函数,它不是jquery,但应该很容易转换:

    function disableSelection(elm) {
        // Disable the selection of `elm` - should work for all major browsers except Opera
        // which doesn't seem to allow disabling selections unless the mousedown 
        // events etc are cancelled as far as I know
    
        // Disable the select start event
        elm.onselectstart = function() {
            return false
        }
    
        // Disable in IE - see http://msdn.microsoft.com/en-us/library/ms534706(VS.85).aspx
        elm.unselectable = "on"
    
        // Disable in Mozilla - see https://developer.mozilla.org/en/CSS/-moz-user-select
        elm.style.MozUserSelect = 'none'
    
        // Disable Safari/Chrome
        // See http://help.dottoro.com/lcrlukea.php
        elm.style.webkitUserSelect = 'none'
    
        // Disable in other browsers
        elm.style.userSelect = 'none'
    
        // Display a normal cursor
        elm.style.cursor = "default"
    }
    
        3
  •  2
  •   user113716    14 年前

    使用CSS用户选择可以禁用某些非IE浏览器中的文本选择。

    -webkit-user-select:none; 
    -k-user-select:none; 
    -moz-user-select:moz-none; 
    user-select:none;
    

    对IE不确定。

    就您试图达到的效果而言,如何使输入不可见并在显示输入值的输入顶部有一个DIV?

    如果需要更改输入中的值,则DIV上的单击事件将焦点指向输入,而按键事件将更新DIV。

    还没试过,但似乎可以用。

    编辑:

    使用CSS使输入不可见,以便保留选项卡功能。

    (示例假设背景为fff)

    #myInput {
        border-width:0;
        color:#FFF;
        background:#FFF;
        outline:0;
    }