2012-07-02 52 views
0

我有一些dijit.InlineEditBox部件,現在我需要添加一些搜索凸顯了他們,所以我用類=「亮點」的跨度在匹配的單詞返回結果。生成的代碼看起來是這樣的:dijit.InlineEditBox與突出顯示的HTML

<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> 

這看起來不如預期,但是,當我開始編輯標題添加跨度出現。我如何讓編輯刪除添加的範圍,以便只保留文本?

在這種特殊情況下,書籍的標題中沒有html,所以某種完整的標籤剝離應該可以工作,但是找到解決方案會很好(對於使用dijit.Editor的簡短描述字段小部件也許)在現有的HTML保留在原位,只有高亮範圍被刪除。

另外,如果您可以建議更好的方法來做到這一點(內聯編輯和單詞突出顯示),請讓我知道。

謝謝!

回答

0

這將如何影響您在編輯器中顯示的內容?它取決於你允許進入該領域的內容 - 你將需要一個富文本編輯器(巨大的足跡)來正確處理html。

這些正則表達式的將修剪掉XML標籤

this.value = this.displayNode.innerHTML.replace(/<[^>]*>/, " ").replace(/<\/[^>]*>/, ''); 

這裏的下面的代碼的運行例如:fiddle

<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> 

的renderAsHtml屬性唯一修剪「關閉一個層」,這樣嵌入的HTML將仍然是html afaik。通過以上你應該能夠1)覆蓋onFocus處理,2)爲自己設定的可編輯值和3)所說的「老」 onFocus方法。

或者(如同看見你有媒體鏈接設置「titles.save_ *」的道具,使用dojo/connect代替dojo/method - 但你需要先到那兒,有點說