关键词:
【中文标题】通过javascript每次点击动态禁用文本选择?【英文标题】:Disable text selection dynamically per click via javascript? 【发布时间】:2012-08-12 03:55:42 【问题描述】:我有一个表格,我添加了一些多项选择功能,其中 shift + click 在第一次单击和第二次单击之间选择行,但最终突出显示行之间的所有文本。
我不想通过 CSS 禁用文本选择,因为这些东西确实需要可选,而不是当我的多选功能触发时 shift + click 时。
这个可以吗?
var lastChecked;
$("#contact_table tr").click(function(e)
if (e.target.getAttribute('type') == 'checkbox')
return;
;
if (e.shiftKey && lastChecked)
// select between last point and new point
var tableRows = $("#contact_table tr");
var newRow = tableRows.index($(this));
var oldRow = tableRows.index(lastChecked);
if (oldRow < newRow)
newRow = newRow +1;
var sliceRange = [newRow, oldRow].sort();
var selectedRows = tableRows.slice(sliceRange[0], sliceRange[1])
.find('input[type=checkbox]').attr('checked', true);
else
var checkbox = $(this).find('input[type=checkbox]');
var checked = toggleCheckbox(checkbox);
if (checked)
lastChecked = $(this);
;
recalculateSelectedButton();
);
【问题讨论】:
可以分享一下你的多选功能吗?我认为您应该能够阻止事件处理程序中的默认行为。 @PJH 刚刚添加了它!谢谢:) ***.com/questions/826782/… @JoelPurra 是的,我在帖子中引用了该方法。我很好奇是否有一个 JS 事件可以劫持这种行为,而不是临时动态设置 CSS(我什至不确定这是否可行,因为点击已经开始)。 @YujiTomita:你是对的。我误读了! 【参考方案1】:您可以使用 javascript 取消选择所有文本;在运行多选逻辑后添加对RemoveSelection()
的调用。
来自http://help.dottoro.com/ljigixkc.php 通过Clear a selection in Firefox
function RemoveSelection ()
if (window.getSelection) // all browsers, except IE before version 9
var selection = window.getSelection ();
selection.removeAllRanges ();
else
if (document.selection.createRange) // Internet Explorer
var range = document.selection.createRange ();
document.selection.empty ();
【讨论】:
乔尔,你找到了!这非常有效,显然甚至在 IE 上也是如此。谢谢! 终于! Even a blind squirrel finds a nut once in a while =) 非常感谢,嘘!【参考方案2】:您可以尝试根据选中复选框的数量禁用用户选择。如果有,只需将 CSS 样式 user-select: none;
(和前缀版本)添加到 #contact_table
。
如果您提供 jsfiddle 以及您当前的 javascript 代码和表格,我也会测试代码 - 现在它是原样 ;) 我不确定点击交互将如何与任何取消的事件冒泡一起发挥作用等等。此外,即使选中了复选框,此实现也没有考虑到用户可能想要选择文本(因此它可能不是您要查找的内容)。
$(function()
var $contactTable = $("#contact_table"),
userSelectNoneClass = "user-select-none";
$contactTable.on("change", ":checkbox", function(e)
var numberOfCheckedRows = $("#contact_table :checkbox:checked").length,
anyCheckedRows = (numberOfCheckedRows > 0);
if (anyCheckedRows && $contactTable.hasClass(userSelectNoneClass))
$contactTable.addClass(userSelectNoneClass);
else
$contactTable.removeClass(userSelectNoneClass);
);
);
.user-select-none
/* From https://***.com/questions/826782/css-rule-to-disable-text-selection-highlighting */
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
编辑:改用更改事件。
【讨论】:
乔尔,感谢您的宝贵时间。谢谢!这是一个好主意,但最好不要采取阻止选择的方式,除非在多次单击期间。我认为如果只选择未选中的框,用户会感到困惑,因为人们一开始很少意识到文本选择。 “为什么这该死的东西不起作用??” @YujiTomita:是的,想到了在我实现了代码;)如何禁用文本选择突出显示
...有CSS标准方法来禁用突出显示效果?我意识到这可以通过JavaScript完成,并且通过谷歌搜索得到了Mozill 查看详情
禁用输入,允许点击文本框
...一必要的验证并禁用键盘输入。这样,唯一可能的输入是通过日期选择器。我唯一的问题是将disabled属 查看详情
禁用文本选择并添加例外
...down=\'returnfalse;\'onselectstart=\'returnfalse;\'是否可以通过使用javascript输入textareas和选择来给出异常?如果是的话,你 查看详情
移动网络 - 禁用长按/点击文本选择
】移动网络-禁用长按/点击文本选择【英文标题】:MobileWeb-Disablelong-touch/tapholdtextselection【发布时间】:2012-06-2913:51:21【问题描述】:我已经看到/听到了有关使用user-select的变体禁用文本选择的所有信息,但这些都不能解决我遇... 查看详情
javascript在网站上禁用(文本)选择(代码片段)
如何使用 JavaScript 暂时禁用文本选择?
】如何使用JavaScript暂时禁用文本选择?【英文标题】:HowcanIdisableTextSelectiontemporarilyusingJavaScript?【发布时间】:2010-10-2720:31:11【问题描述】:这是一个有点具体的问题,所以我会直奔主题。我正在为Web应用程序的一部分开发一... 查看详情
Oracle Apex 根据 LOV 选择的值动态启用/禁用文本字段
】OracleApex根据LOV选择的值动态启用/禁用文本字段【英文标题】:OracleApexdynamicallyenable/disabletextfielddependingonLOVselectedvalue【发布时间】:2015-06-1716:42:47【问题描述】:我正在尝试根据LOV选择的值启用/禁用文本字段,但它仅在页面... 查看详情
如何在不触摸或点击文本字段的情况下从动态创建的 UITextField 获取文本(禁用用户交互)?
】如何在不触摸或点击文本字段的情况下从动态创建的UITextField获取文本(禁用用户交互)?【英文标题】:HowtogettextfromdynamicallycreatedUITextFieldwithouttouchingortappingthetextfield(disableduserinteraction)?【发布时间】:2018-07-0313:43:44【问题... 查看详情
CSS 或 Javascript 禁用从 CTRL + A 突出显示的文本选择
】CSS或Javascript禁用从CTRL+A突出显示的文本选择【英文标题】:CSSorJavascripttodisabletextselectionhighlightingfromCTRL+A【发布时间】:2013-05-1911:59:54【问题描述】:注意:这个问题与HowtodisabletextselectionhighlightingusingCSS?不同在提问之前,我... 查看详情
通过选择器获取动态元素
】通过选择器获取动态元素【英文标题】:GettingaDynamicElementbySelector【发布时间】:2018-12-2917:29:23【问题描述】:我需要点击带有id:#product-6852370-Size的某个网页按钮。我正在与Puppeteer合作,所以通常我会这样做:page.click(\'#product-... 查看详情
UITextView 避免文本选择,但保留可点击的链接
...选择但保持链接可点击。screenshot如果我设置:已解决:通过在UIViewDelegate中添加textViewDidChangeSelecti 查看详情
动态文本视图在带遥控器的 Android 电视中不可选择和可点击
...】:我在listview的行内创建了动态textview,但该textview无法通过电视遥控器聚焦,我想知道textview是否有任何特定属性需要设置?源码在这里:@ 查看详情
如何使用javascript从网页中获取点击或选择的文本? [复制]
】如何使用javascript从网页中获取点击或选择的文本?[复制]【英文标题】:howtogettheclickedorselectedtextfromthewebpagesusingjavascript?[duplicate]【发布时间】:2020-11-0321:38:00【问题描述】:如何使用javascript从网页中获取点击或选择的文本?... 查看详情
禁用结束日期不超过 10 天的日历 javascript
】禁用结束日期不超过10天的日历javascript【英文标题】:Disableenddatenotmorethan10daycalendarjavascript【发布时间】:2019-05-2116:48:03【问题描述】:我想知道禁用结束日期不超过10天。此值选择开始日期动态示例:选择开始日期2018年12月2... 查看详情
在 DocumentViewer 中禁用文本选择
...DocumentViewer的文本选择?这是查看器显示XPS文档然后可以通过鼠标突出显示文本的功能。突出显示的文本也可以复制,但我已经禁用了它。我只是不知道如何禁用突出显示。谢谢!【问题讨论】:【参考方案1】: 查看详情
通过绑定动态创建的带有可点击链接的文本
】通过绑定动态创建的带有可点击链接的文本【英文标题】:Dynamicallycreatedtextwithclickablelinksinitviabinding【发布时间】:2011-04-3015:26:04【问题描述】:我确实想创建一个列表视图,其中包含自己类的许多项目。其中一个属性是可以... 查看详情
点击后通过 JavaScript 动态创建 jQuery Mobile 页面
】点击后通过JavaScript动态创建jQueryMobile页面【英文标题】:DynamicallycreatejQueryMobilepageviaJavaScriptafterclicking【发布时间】:2011-08-2808:49:26【问题描述】:我的jQueryMobile应用由一个index.html页面组成,并且只包含一个带有启动链接的... 查看详情
禁用 Chrome for Android 文本选择弹出窗口
...弹出窗口(附加屏幕截图)就不会出现。有没有办法使用javascript来做,而不是从整体上删除文本选择功能?【问题讨论】:【参 查看详情