2013-09-29 5 views
1

Как предотвратить удаление содержимого <td> при двойном нажатии <td>?Двойной щелчок, не выбирая содержимое

Если вручную щелкнуть по одному щелчку мыши в любом месте страницы после двойного щелчка, содержимое (выбранное двойным щелчком) не будет выбрано.

Однако, если я спусковым механизмом, который одним нажатием кнопки программно, содержание фактически остается выделенным ...

$(".tableCell").dblclick(function(){ 
    $("body").click(); 
}); 

Это дает тот же результат:

$(".tableCell").dblclick(function(){ 
    return false; 
}); 

скрипку: http://jsfiddle.net/eYpY6/1/

+0

Я предполагаю, что даже если я смогу заставить выше работать, может быть видна вспышка выбора/отмены выбора. Было бы идеально, чтобы предотвратить первоначальный отбор вообще, но я открыт для всех идей ... –

+0

Помещает ли это 'return false' в обработчике? – Barmar

+0

@Barmar, тот же результат ... –

ответ

1

Заимствовано из этого ответа SO: How to disable text selection highlighting using CSS?

Вы можете использовать это:

-webkit-touch-callout: none; 
-webkit-user-select: none; 
-khtml-user-select: none; 
-moz-user-select: none; 
-ms-user-select: none; 
user-select: none; 

в правиле CSS, см скрипка: http://jsfiddle.net/KyleMuir/eYpY6/2/

Нет JS нужна :)

Надеется, что это помогает.

+1

Ницца. Это довольно пятно. Я принимаю ваш ответ, но если кто-нибудь приходит с решением, которое все еще позволяет выбрать один щелчок/перетаскивание ... они могут украсть его у вас;) –

+0

PS, как вы получили свое имя в URL-адресе на jsfiddle? –

+1

Ха-ха достаточно справедливо :) Что касается JSFiddle, если вы создаете учетную запись каждый раз, когда вы входите в систему, она свяжет эти скрипты с вашей учетной записью, которая включает в себя обновление скриптов других людей. Это очень мило. –

1

Заимствованные из другого ответа: Prevent text selection after double click

$(document).ready(function(){ 
$(".tableCell").dblclick(function(){ 
clearSelection(); 
}); 
}); 

function clearSelection() { 
if(document.selection && document.selection.empty) { 
    document.selection.empty(); 
} else if(window.getSelection) { 
    var sel = window.getSelection(); 
    sel.removeAllRanges(); 
} 
} 

Fiddle здесь: http://jsfiddle.net/eYpY6/3/

+0

О, хватит, я не понимал, что там был дублированный вопрос ... +1, потому что он позволяет выбирать один клик, но выбор по-прежнему мигает двойным щелчком. –

0

Немного поздно, но я думал, что я разделю этот ответ. Вы можете отключить выбор текста с помощью двойного щелчка, используя только код кода, который я написал в this JSFiddle, для this SO question, который попросил CSS (но я не смог найти ответ, поэтому дал ответ на Javascript в том случае, если OP был в порядке с этим). В основном, код требует изменения истории кликов с двойным щелчком, а затем программным образом повторного выбора того, что было ранее выбрано. Это было достигнуто с использованием selectionStart и selectionEnd. Я уверен, что есть более элегантное решение, но это то, что у меня есть сейчас.

Смежные вопросы