利用jQuery UI 的 disableSelection() 讓網頁內的文字無法被選取

這是我在無意間發現的,怎麼會有 disableSelection() function在UI裏,卻沒有任何說明文件。

但它真的是可以用而且還支援多個瀏覽器。至於為什麼要讓網頁無法選取文字呢?其實我的用意是要讓UI中可以拖拉的元素可以更順暢而已。

要用它只要引入jQuery的UI文件即可,然後只要在javascript的區塊上補上「$(document).disableSelection();」,通常我都是補在「$(document).ready(function(){………});」裏面。

最好再禁用「Ctrl+A」 全選的功能。

範例程式碼

$(document).ready(function(){
    $(document).disableSelection();
    $(document).keydown(function(e){
        if(e.ctrlKey &&(e.keyCode =='65' || e.keyCode=='83')){
            return false;
        }
    });
.....................
................
});

補充

如果用$(document).disableSelection();讓整個文件都不能做文字選取,再加上使用UI的datepicke功能且偏偏用了firefox或是opera瀏覽。那麼datepicker會變的不正常跳不出選取日期的視窗

我是用以下的方法解決此問題(新增兩條觸發事件的function):

  • 在datepicker的元素接收到滑鼠被按下事件時,立即解除文字選取限制。
  • $("#timestamp1,#timestamp2").mousedown(function(){
        $(document).enableSelection();
    });
  • 然後在datepicker的視窗關閉後再立即將全文件禁止文字選取。
  • $("#timestamp1,#timestamp2").datepicker({onClose:function(){
        $(document).disableSelection();
    }});

附錄 KEYCODE 出處:程式角落-ProgramCorner

字母和數字鍵(keyCode)

按鍵 KeyCode 按鍵 KeyCode 按鍵 KeyCode 按鍵 KeyCode
A 65 J 74 S 83 1 49
B 66 K 75 T 84 2 50
C 67 L 76 U 85 3 51
D 68 M 77 V 86 4 52
E 69 N 78 W 87 5 53
F 70 O 79 X 88 6 54
G 71 P 80 Y 89 7 55
H 72 Q 81 Z 90 8 56
I 73 R 82 0 48 9 57

右邊數字鍵盤(keyCode) 功能鍵(keyCode)

按鍵 KeyCode 按鍵 KeyCode 按鍵 KeyCode 按鍵 KeyCode
0  96 8 104 F1 112 F7 118
1  97 9 105 F2 113 F8 119
2  98 * 106 F3 114 F9 120
3  99 + 107 F4 115 F10 121
4  100 Enter 108 F5 116 F11 122
5  101 109 F6 117 F12 123
6  102 . 110
7  103 / 111

控制键(keyCode)

按鍵 KeyCode 按鍵 KeyCode 按鍵 KeyCode 按鍵 KeyCode
BackSpace 8 Esc 27 Right-Arrow 39 -_ 189
Tab 9 Spacebar 32 Dw-Arrow 40 .> 190
Clear 12 Page-Up 33 Insert 45 /? 191
Enter 13 Page-Down 34 Delete 46 `~ 192
Shift 16 End 35 Num-Lock 144 [{ 219
Control 17 Home 36 ;: 186 \| 220
Alt 18 Left-Arrow 37 =+ 187 ]} 221
Cape-Lock 20 Up-Arrow 38 ,< 188 ‘" 222

keycode   0 =
keycode   1 =
keycode   2 =
keycode   3 =
keycode   4 =
keycode   5 =
keycode   6 =
keycode   7 =
keycode   8 = BackSpace
keycode   9 = Tab
keycode  10 =
keycode  11 =
keycode  12 = Clear
keycode  13 = Enter
keycode  14 =
keycode  15 =
keycode  16 = Shift_L
keycode  17 = Control_L
keycode  18 = Alt_L
keycode  19 = Pause
keycode  20 = Caps_Lock
keycode  21 =
keycode  22 =
keycode  23 =
keycode  24 =
keycode  25 =
keycode  26 =
keycode  27 = Esc Escape
keycode  28 =
keycode  29 =
keycode  30 =
keycode  31 =
keycode  32 = Space
keycode  33 = Page Up
keycode  34 = Page Down
keycode  35 = End
keycode  36 = Home
keycode  37 = Left Arrow
keycode  38 = Up Arrow
keycode  39 = Right Arrow
keycode  40 = Down Arrow
keycode  41 = Select
keycode  42 = Print
keycode  43 = Execute
keycode  44 =
keycode  45 = Insert
keycode  46 = Delete
keycode  47 = Help
keycode  48 = 0 )
keycode  49 = 1 !
keycode  50 = 2 @
keycode  51 = 3 #
keycode  52 = 4 $
keycode  53 = 5 %
keycode  54 = 6 ^
keycode  55 = 7 &
keycode  56 = 8 *
keycode  57 = 9 (
keycode  58 =
keycode  59 =
keycode  60 =
keycode  61 =
keycode  62 =
keycode  63 =
keycode  64 =
keycode  65 = a A
keycode  66 = b B
keycode  67 = c C
keycode  68 = d D
keycode  69 = e E
keycode  70 = f F
keycode  71 = g G
keycode  72 = h H
keycode  73 = i I
keycode  74 = j J
keycode  75 = k K
keycode  76 = l L
keycode  77 = m M
keycode  78 = n N
keycode  79 = o O
keycode  80 = p P
keycode  81 = q Q
keycode  82 = r R
keycode  83 = s S
keycode  84 = t T
keycode  85 = u U
keycode  86 = v V
keycode  87 = w W
keycode  88 = x X
keycode  89 = y Y
keycode  90 = z Z
keycode  91 =
keycode  92 =
keycode  93 =
keycode  94 =
keycode  95 =
keycode  96 = KP_0
keycode  97 = KP_1
keycode  98 = KP_2
keycode  99 = KP_3
keycode 100 = KP_4
keycode 101 = KP_5
keycode 102 = KP_6
keycode 103 = KP_7
keycode 104 = KP_8
keycode 105 = KP_9
keycode 106 = KP_* KP_Multiply
keycode 107 = KP_+ KP_Add
keycode 108 = KP_Enter KP_Separator
keycode 109 = KP_- KP_Subtract
keycode 110 = KP_. KP_Decimal
keycode 111 = KP_/ KP_Divide
keycode 112 = F1
keycode 113 = F2
keycode 114 = F3
keycode 115 = F4
keycode 116 = F5
keycode 117 = F6
keycode 118 = F7
keycode 119 = F8
keycode 120 = F9
keycode 121 = F10
keycode 122 = F11
keycode 123 = F12
keycode 124 = F13
keycode 125 = F14
keycode 126 = F15
keycode 127 = F16
keycode 128 = F17
keycode 129 = F18
keycode 130 = F19
keycode 131 = F20
keycode 132 = F21
keycode 133 = F22
keycode 134 = F23
keycode 135 = F24
keycode 136 = Num_Lock
keycode 137 = Scroll_Lock
keycode 138 =
keycode 139 =
keycode 140 =
keycode 141 =
keycode 142 =
keycode 143 =
keycode 144 =
keycode 145 =
keycode 146 =
keycode 147 =
keycode 148 =
keycode 149 =
keycode 150 =
keycode 151 =
keycode 152 =
keycode 153 =
keycode 154 =
keycode 155 =
keycode 156 =
keycode 157 =
keycode 158 =
keycode 159 =
keycode 160 =
keycode 161 =
keycode 162 =
keycode 163 =
keycode 164 =
keycode 165 =
keycode 166 =
keycode 167 =
keycode 168 =
keycode 169 =
keycode 170 =
keycode 171 =
keycode 172 =
keycode 173 =
keycode 174 =
keycode 175 =
keycode 176 =
keycode 177 =
keycode 178 =
keycode 179 =
keycode 180 =
keycode 181 =
keycode 182 =
keycode 183 =
keycode 184 =
keycode 185 =
keycode 186 =
keycode 187 = =+
keycode 188 = ,<
keycode 189 = -_
keycode 190 = .>
keycode 191 = /?
keycode 192 = `~
keycode 193 =
keycode 194 =
keycode 195 =
keycode 196 =
keycode 197 =
keycode 198 =
keycode 199 =
keycode 200 =
keycode 201 =
keycode 202 =
keycode 203 =
keycode 204 =
keycode 205 =
keycode 206 =
keycode 207 =
keycode 208 =
keycode 209 =
keycode 210 = plusminus hyphen macron
keycode 211 =
keycode 212 = copyright registered
keycode 213 = guillemotleft guillemotright
keycode 214 = masculine ordfeminine
keycode 215 = ae AE
keycode 216 = cent yen
keycode 217 = questiondown exclamdown
keycode 218 = onequarter onehalf threequarters
keycode 219 = [{
keycode 220 = \|
keycode 221 = ]}
keycode 222 = ‘"
keycode 223 =
keycode 224 =
keycode 225 =
keycode 226 =
keycode 227 = multiply division
keycode 228 = acircumflex Acircumflex
keycode 229 = ecircumflex Ecircumflex
keycode 230 = icircumflex Icircumflex
keycode 231 = ocircumflex Ocircumflex
keycode 232 = ucircumflex Ucircumflex
keycode 233 = ntilde Ntilde
keycode 234 = yacute Yacute
keycode 235 = oslash Ooblique
keycode 236 = aring Aring
keycode 237 = ccedilla Ccedilla
keycode 238 = thorn THORN
keycode 239 = eth ETH
keycode 240 = diaeresis cedilla currency
keycode 241 = agrave Agrave atilde Atilde
keycode 242 = egrave Egrave
keycode 243 = igrave Igrave
keycode 244 = ograve Ograve otilde Otilde
keycode 245 = ugrave Ugrave
keycode 246 = adiaeresis Adiaeresis
keycode 247 = ediaeresis Ediaeresis
keycode 248 = idiaeresis Idiaeresis
keycode 249 = odiaeresis Odiaeresis
keycode 250 = udiaeresis Udiaeresis
keycode 251 = ssharp question backslash
keycode 252 = asciicircum degree
keycode 253 = 3 sterling
keycode 254 = Mode_switch

2 thoughts on “利用jQuery UI 的 disableSelection() 讓網頁內的文字無法被選取

  1. $(document).keydown(funciton(e){
    if(e.ctrlKey &&(e.keyCode ==’65’ || e.keyCode==’83’)){
    return false;
    }
    });

    大大你打錯字了=__=function不是funciton

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s