div 内容可编辑但只读
div contentEditable but Readonly
我有一个 div 和一些文本,当光标悬停在 div 到 select 文本时,我想要。如果我让这个 div 保持原样,当我尝试 select 全部 (CTRL+A) 时,我会 select 所有页面内容,即所有正文。
为了摆脱这个,我需要为此使用 contenteditable 属性 div。
但我不想让人改文/复制/剪切等等
我尝试为此使用只读 div,但不起作用。
有什么建议吗?
PS1:这个div里面还有其他标签(html内容),但我认为这不是问题。
PS2:这里有一个例子:jsfiddle.net/msakamoto_sf/wfae8hzv/ - 但有一个问题。你可以剪切文本:(
要防止 ctrl + x(剪切)来自 div 您需要使用以下 JQuery :
if (event.ctrlKey && event.keyCode === 88)
{
return false;
}
它将阻止从 div 中剪切文本。
您可以通过处理"cut"事件并调用它的preventDefault()
方法来阻止用户剪切。这将防止通过任何用户输入(包括浏览器的上下文菜单或编辑菜单)进行剪切,而不仅仅是通过特定的组合键。
此示例使用 jQuery 因为您的 jsFiddle 使用它:
$("#editablediv").on("cut", function(e) {
e.preventDefault();
});
将 contenteditable 设置为 false,它应该可以工作!!就这么简单。
使用 div 的 contenteditable 属性使其可编辑或不可编辑
并对表单输入元素使用只读属性。
<element contenteditable="true|false">
<input readonly="readonly" />
在 keydown
事件中使用 event.metaKey
检查是否按下了 ctrl(或 mac 上的 cmd)键。您还必须禁用 cut
和 paste
事件。
<div
contenteditable="true"
oncut="return false"
onpaste="return false"
onkeydown="if(event.metaKey) return true; return false;">
content goes here
</div>
对于 JavaScript,
document.getElementById(divid).contentEditable = "false";
这会起作用
这是 React 中的一个示例,但它也适用于基本 HTML 和 JavaScript,因为我只是利用默认事件。
// import CSS
import './DefaultSettings.css';
// import packages
import React, { Component } from 'react';
// import components
const noop = (e) => {
e.preventDefault();
return false;
};
class DefaultSettings extends Component {
render() {
return (
<div className="DefaultSettings"
contentEditable={true}
onCut={noop}
onCopy={noop}
onPaste={noop}
onKeyDown={noop}>
</div>
);
}
}
export default DefaultSettings;
在用户 ID 条件下设置 contentEditable="false"
我有一个 div 和一些文本,当光标悬停在 div 到 select 文本时,我想要。如果我让这个 div 保持原样,当我尝试 select 全部 (CTRL+A) 时,我会 select 所有页面内容,即所有正文。
为了摆脱这个,我需要为此使用 contenteditable 属性 div。
但我不想让人改文/复制/剪切等等
我尝试为此使用只读 div,但不起作用。
有什么建议吗?
PS1:这个div里面还有其他标签(html内容),但我认为这不是问题。
PS2:这里有一个例子:jsfiddle.net/msakamoto_sf/wfae8hzv/ - 但有一个问题。你可以剪切文本:(
要防止 ctrl + x(剪切)来自 div 您需要使用以下 JQuery :
if (event.ctrlKey && event.keyCode === 88)
{
return false;
}
它将阻止从 div 中剪切文本。
您可以通过处理"cut"事件并调用它的preventDefault()
方法来阻止用户剪切。这将防止通过任何用户输入(包括浏览器的上下文菜单或编辑菜单)进行剪切,而不仅仅是通过特定的组合键。
此示例使用 jQuery 因为您的 jsFiddle 使用它:
$("#editablediv").on("cut", function(e) {
e.preventDefault();
});
将 contenteditable 设置为 false,它应该可以工作!!就这么简单。
使用 div 的 contenteditable 属性使其可编辑或不可编辑 并对表单输入元素使用只读属性。
<element contenteditable="true|false">
<input readonly="readonly" />
在 keydown
事件中使用 event.metaKey
检查是否按下了 ctrl(或 mac 上的 cmd)键。您还必须禁用 cut
和 paste
事件。
<div
contenteditable="true"
oncut="return false"
onpaste="return false"
onkeydown="if(event.metaKey) return true; return false;">
content goes here
</div>
对于 JavaScript,
document.getElementById(divid).contentEditable = "false";
这会起作用
这是 React 中的一个示例,但它也适用于基本 HTML 和 JavaScript,因为我只是利用默认事件。
// import CSS
import './DefaultSettings.css';
// import packages
import React, { Component } from 'react';
// import components
const noop = (e) => {
e.preventDefault();
return false;
};
class DefaultSettings extends Component {
render() {
return (
<div className="DefaultSettings"
contentEditable={true}
onCut={noop}
onCopy={noop}
onPaste={noop}
onKeyDown={noop}>
</div>
);
}
}
export default DefaultSettings;
在用户 ID 条件下设置 contentEditable="false"