2017-10-06 10 views
0

jQueryを使用して、入力テキストフィールドから不要なhtmlタグを削除しています。特殊文字がHTML文字列からjQuery domを作成する

構文エラー、認識できない表現を:これは、特殊文字が、私はフライDOMの作成の時に次のエラーを取得する(私ができるようにしたい)など™などのHTMLエンティティとして入力されたとき、しかし、正常に動作します: .. ™

アイデアは、テキストフィールドからのHTML文字列を取得することです。そこからDOM要素を作成します。不要なタグのみを削除します。

データは次のようになります。<span>My <b>company</b></span>My <b>company</b>にスクラブされています。

しかしデータは次のように入力された:My <b>company</b> &trade;休憩

var s = jQuery(this).find('#new-topic').val(); 
 
var $s = jQuery(s); //this is where the error occurs 
 
var $elements = $s.find("*").not("b, strong"); //get elements that are not <b> or <strong> 
 

 
for (var i = $elements.length - 1; i >= 0; i--) { 
 
    var e = $elements[i]; 
 
    jQuery(e).replaceWith(e.innerHTML); 
 
} 
 

 
var finalInput = $s.html();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="new-topic" type="text">

が、この場合の特殊文字を許可するようにとにかくありますか?

答えて

0

テキストフィールドからキャプチャした文字列がタグでラップされていない場合、実際に問題が発生しています。たとえば、My <b>company</b> &trade;ですが、<span>My <b>company</b> &trade;</span>が機能します。これは、テキストフィールドにタグが入力されていない場合にも、望ましくない動作を引き起こしていました:My company。私は、DOM要素を作成する前に、私は常にタグ内の文字列をラップこれを解決するには:このプロパティスクラブ不要なタグについてしかしに行くための最善の方法がある場合s = '<test>'+s+'</test>';

jQuery('#remove-unwanted-tags').on('click', function() { 
 
    var s = jQuery('#new-topic').val(); 
 
    console.log('Before removing unwanted tags: ' + s); 
 
    s = '<test>' + s + '</test>'; //added fix 
 
    var $s = jQuery(s); //this is where the error occurs 
 
    var $elements = $s.find("*").not("b, strong"); //get elements that are not <b> or <strong> 
 
    
 
    for (var i = $elements.length - 1; i >= 0; i--) { 
 
     var e = $elements[i]; 
 
     jQuery(e).replaceWith(e.innerHTML); 
 
    } 
 
    
 
    var finalInput = $s.html(); 
 
    console.log('After removing unwanted tags: ' + finalInput); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" id="new-topic" type="text"> 
 
<input type="button" id="remove-unwanted-tags" value="remove unwanted tags">

わかりません少なくともそれは働く。