使用JS检查HTML元素是否可编辑
Check whether an HTML element is editable or not using JS
使用JS,我们如何找到是否可以键入html元素。我尝试将".tagName"与"INPUT"或"TEXTAREA"进行比较,但它无法区分常规输入文本/电子邮件元素和单选按钮或提交按钮。
我也尝试过使用".isContentEditable",但当元素是"继承的"时,我无法区分。
对于输入和文本区域,请检查tagName
和type
,不要忘记更新的HTML5输入类型,如email
。以下是我的代码片段,用于在一个名为el
:的变量中存储的元素上测试这一点
var nodeName = el.nodeName.toLowerCase();
if (el.nodeType == 1 && (nodeName == "textarea" ||
(nodeName == "input" && /^(?:text|email|number|search|tel|url|password)$/i.test(el.type)))) {
// Do stuff
}
对于其他元素,isContentEditable
属性在所有情况下都有效,并且应该只返回布尔值,而不是像"inherit"
这样的字符串。
最后,有可能使用document.designMode
属性使整个文档可编辑,在这种情况下,document.designMode
将具有字符串值"on"
。
这是一个typescript版本。
function isEditableElement(el: EventTarget) {
if (el instanceof HTMLElement && el.isContentEditable) return true;
if (el instanceof HTMLInputElement) {
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types
if (/|text|email|number|password|search|tel|url/.test(el.type || '')) {
return !(el.disabled || el.readOnly);
}
}
if (el instanceof HTMLTextAreaElement) return !(el.disabled || el.readOnly);
return false;
}
@percy507有一个打字错误。if (/|text|email|numb
->if (/text|email|numb
function isEditableElement(el: EventTarget) {
if (el instanceof HTMLElement && el.isContentEditable) return true;
if (el instanceof HTMLInputElement) {
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#input_types
if (/text|email|number|password|search|tel|url/.test(el.type || '')) {
return !(el.disabled || el.readOnly);
}
}
if (el instanceof HTMLTextAreaElement) return !(el.disabled || el.readOnly);
return false;
}
使用只读属性。
发件人http://www.w3schools.com/jsref/prop_text_readonly.asp:
document.getElementById("myText").readOnly = true;
相关文章:
- 如何使用jQuery可编辑插件检查ajax是否成功完成
- 检查onbeforeunload中的ace编辑器,查看是否进行了更改
- jqGrid - 是否有任何“网格编辑模式”
- 是否可以在没有CMS的情况下使用富文本编辑器
- 当一个单元格被编辑时,是否有一个事件触发,但值没有'不要改变
- 如何检查所选文本是否可编辑
- 如何通过服务器找到用户是否开始响应?[i.e.In 编辑他们是否键入的文本]
- 在设置 IIS Express 以识别 JSON 文件类型后 - VS 是否可以调用除纯文本之外的更好的编辑器
- 是否可以禁用 MarkdownDeep Markdown 编辑器中的预览窗格
- 在单击后创建输入时,是否可以准确地在单击发生的位置开始编辑输入
- 在 html 中制作可编辑的表格时,是否最好将表格内容保留在数组中
- 是否有可编辑的 jsGrid 的完整工作示例
- 对数据库进行 AJAX 编辑时,我是否应该立即使用新数据更新接口
- 是否可以使用 for 循环编辑多个数组
- 是否可以使用 javascript 编辑文本输入并添加到撤消堆栈
- 革命滑块 - 是否有独立的编辑器
- Slickgrid:是否可以将选项传递给编辑器
- 使用JS检查HTML元素是否可编辑
- 网站是否有可能知道你是否编辑了他们的javascript变量?
- 如何检查在asp.net页面上是否编辑了文本区域