2011-10-23 58 views
3

使用jQuery插件jEditable。我遇到的問題是,我希望在觸發jEditable事件後,任何可編輯的都可以顯示文本而不是html。jEditable將輸入中的HTML轉換爲文本

例如,如果我有一個元素<span class="editable">Jack & Jill</span>,當我點擊它,我得到Jack &amp; Jill,但我要的是Jack & Jill作爲我的輸入,使得用戶不看HTML值。

必須有一些我可以做的數據設置[也許是一個value.replace();或者其他的東西]。現在我只是讓它返回值。

CODE

$('.editable').each(function() { 
     $(this).editable('url', { 
       data: function(value, settings) { 
         var retval = value; 
         return retval; 
       } 

     }); 
}); 

回答

1

渲染時使用PHP的頁面,它看起來像你正在使用的htmlspecialchars()或類似&轉化爲它的HTML實體相當於&amp;。所以當你編輯它時,你不需要從頁面上的項目加載信息,你需要從ajax調用加載它到你的服務器(它將返回實際的html,而不是通過htmlspecialchars()或者通過htmlspecialchars還要別的嗎)。

Jeditable給你這個一個不錯的選擇,那麼你可以試試:

$('.editable').each(function() { 
     $(this).editable('url', { 
       loadurl : 'http://www.example.com/returnUntouchedhtml.php', 
       data: function(value, settings) { 
         var retval = value; 
         return retval; 
       } 

     }); 

}); 

您可以在此頁面找到更多的例子/信息:http://www.appelsiini.net/projects/jeditable

+0

工程。加載數據時我做了一個htmlspecialchars_decode。 – ksindi

1

可以試試這個:

 'data': function (value, config) { 
      console.log(value); 
      var v = $('<p></p>').html(value).text(); 
      return v; 
     },