Dojo 带有突出显示html的dijit.InlineEditBox
我有一些dijit.InlineEditBox小部件,现在我需要在这些小部件上添加一些搜索高亮显示,因此我返回的结果在匹配的单词上带有一个span class=“highlight”。生成的代码如下所示:Dojo 带有突出显示html的dijit.InlineEditBox,dojo,highlight,inlineeditbox,Dojo,Highlight,Inlineeditbox,我有一些dijit.InlineEditBox小部件,现在我需要在这些小部件上添加一些搜索高亮显示,因此我返回的结果在匹配的单词上带有一个span class=“highlight”。生成的代码如下所示: <div id="title_514141" data-dojo-type="dijit.InlineEditBox" data-dojo-props="editor:\'dijit.form.TextBox\', onFocus:titles.save_old_value,
<div id="title_514141" data-dojo-type="dijit.InlineEditBox"
data-dojo-props="editor:\'dijit.form.TextBox\', onFocus:titles.save_old_value,
onChange:titles.save_inline, renderAsHtml:true">Twenty Thousand Leagues <span
class="highlight">Under</span> the Sea</div>
2万海里
这看起来和预期的一样,但是,当我开始编辑标题时,添加的跨度就会显示出来。如何使编辑器删除添加的跨距,以便只保留文本
在这种特殊情况下,书籍的标题中没有html,因此某种形式的完整标记剥离应该可以工作,但最好找到一个解决方案(如果是带有dijit.Editor小部件的简短描述字段),其中保留现有html,只删除突出显示范围
另外,如果你能建议一个更好的方法(内联编辑和单词突出显示),请让我知道
谢谢大家! 这将如何影响编辑器中显示的内容?这取决于您允许进入字段的内容-您需要一个富文本编辑器(巨大的内存)来正确处理html 这些RegExp将删除XML标记
this.value = this.displayNode.innerHTML.replace(/<[^>]*>/, " ").replace(/<\/[^>]*>/, '');
this.value=this.displayNode.innerHTML.replace(/]*>/,“”).replace(/]*>/,“”);
下面是以下代码的运行示例:
2万海里
this.value=this.displayNode.innerHTML。
替换(/]*>/,“”)。
替换(/]*>/,'');
这是继承的(论点);
renderAsHtml属性只修剪“一层”,因此嵌入的HTML仍然是HTML afaik。通过以上操作,您应该能够1)覆盖onFocus
处理,2)自己设置可编辑值,3)调用“old”onFocus
方法
或者(如果你有allready set“titles.save.*”的道具,可以使用dojo/connect
而不是dojo/method
——但是你需要先到达那里,比如说
<div id="title_514141" data-dojo-type="dijit.InlineEditBox"
data-dojo-props="editor:\'dijit.form.TextBox\', onFocus:titles.save_old_value,
onChange:titles.save_inline, renderAsHtml:true">Twenty Thousand Leagues <span
class="highlight">Under</span> the Sea
<script type="dojo/method" event="onFocus">
this.value = this.displayNode.innerHTML.
replace(/<[^>]*>/, " ").
replace(/<\/[^>]*>/, '');
this.inherited(arguments);
</script>
</div>