Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何使跨度标记不可删除?_Html - Fatal编程技术网

Html 如何使跨度标记不可删除?

Html 如何使跨度标记不可删除?,html,Html,我试图在“contenteditable”div中使span标记不可删除: <div contenteditable>Editable <span contenteditable="false">Read Only</span></div> 可编辑只读 只读范围实际上是只读的,但我可以用一次delete键删除整个范围。是否有一种属性方式来告诉跨度它不可删除 您正在使用jquery吗。在单击span时使用此代码: $(this).click(fu

我试图在“contenteditable”div中使span标记不可删除:

<div contenteditable>Editable <span contenteditable="false">Read Only</span></div>
可编辑只读

只读范围实际上是只读的,但我可以用一次delete键删除整个范围。是否有一种属性方式来告诉跨度它不可删除

您正在使用jquery吗。在单击span时使用此代码:

$(this).click(function(){
$('span').remove();
});

使div
位置:相对
和span
位置:绝对
。这会使跨度超出正常文档流,仍在div内,但无法更改或删除:

div[内容可编辑]{
位置:相对位置;
}
div[contenteditable]span{
位置:绝对位置;
左边距:1米;
}
可编辑只读-无法触摸此
…仍然允许我删除跨度(但不编辑它)

仅通过contenteditable属性无法实现这一点。它正在按预期工作。contenteditable属性的作用是:它允许用户编辑元素的内容

考虑一个装有果酱的罐子,盒子里写着你可以改变盒子的内容。罐子上有一个标签,上面写着“你不能换这个罐子里的果酱”。这条规则并不禁止你将所说的罐子扔进垃圾桶,因为你这样做从来不会改变罐子的内容


我建议,就像Noel Widmer做的那样,你应该尝试找到另一种解决问题的方法。如果你能提供一个高保真度的例子,我们可能会建议一些替代方案。

所以我找到了最好的解决方案,非常简单。不需要中的内容可编辑div。只有几个内容可编辑跨距

            <div>
                <span contenteditable="true">
                    Editable text here.
                </span>
                <span contenteditable="false" style="font-weight: bold">
                    READ ONLY VALUES
                </span>
                <span contenteditable="true">
                    Edit more stuff here 
                </span>
             </div>

此处为可编辑文本。
只读值
在这里编辑更多内容

从何处删除?实际上没有什么听起来很清楚。您可能是被迫使用js或jquery来实现这一点的。查找所有可编辑的元素并存储其不可编辑的文本。每次编辑后,检查非编辑文本是否仍在控件内,如果不在控件内,则必须重新设置。@divy3993当我说“div contenteditable”时,它的响应就像一个文本区域。我在里面放了一个span,所以它的内容是假的,意味着我不能编辑它(即“只读”)。但是,因为整个div是contenteditable,所以我可以在html中编辑/删除。我试图使这个特定的跨度保持不变。@br4d.net这是所有的html。我刚才解释了“@br4d.net”这是一个几乎所有浏览器都支持的功能:但问题是,如果我在只读范围之后添加更多的可编辑内容,它会与只读内容相矛盾。@Alonweisfeld-我不太清楚你的意思。。。你能举个例子吗?可编辑只读-此处不能触摸更多内容“此处更多内容”将与只读值冲突,因为只读范围位置是绝对的,不会影响后面的间距。最终,目标是制作一个具有一些无法更改的值的小部件。它可以是一个输入,文本区域,或任何东西。举个更清楚的例子:如果未触及的值设置为“Danny”,我会设置一个占位符“这个孩子叫Danny,他喜欢苹果”。这应该在一个小部件中表示,以便我可以编辑除以只读方式传递的值(Danny)之外的所有内容。我已经尝试过用jQuery来实现它,但是要克服所有按键类型的情况,这是非常复杂的。任何建议都将由greatI创建一个jQuery UI演示。当然,您可以在不使用整个UI库的情况下执行此操作。这个演示不允许嵌套元素,但我希望它能为您提供一个工作的思路。