2011-12-13 10 views
0

私は、テキストエリアの値をサニタイズするようにpasteイベントを設定しました。 1つのことを除いて、私は必要なものすべてを既に実行しています。すべての行の最初と最後に空白を整えます。何か案は?テキストエリアのサニタイズ値:すべての行の空白を削除する

$('#q').bind('paste',function(e) { 
    $.doTimeout(100,function(){ 
     $('#q').val($('#q').val().replace(/[@#$%\^&*=_+"'\/<>\\\|{}\[\]]/g,function(str){return '';})); //remove unwanted characters 
     $('#q').val($('#q').val().replace(/[\t ]+/g,' ')); //remove extra spaces and tabs between letters 
     $('#q').val($('#q').val().replace(/\n{1,}/g,'\n\n')); //remove extra lines 
     //here i need to remove white spaces at the beginning or end of each line 
    }); 
}); 

PS:使用してイムベンalmanのdoTimeout pluginテキストが使用可能になる前に、ペーストイベントが発生しますので。

答えて

1

このようなものはありますか? http://jsfiddle.net/Tentonaxe/ptGS5/

$('#q').bind('paste',function(e) { 
    setTimeout(function(){ 
     var baseStr = $('#q').val(); 
     baseStr = baseStr.replace(/[@#$%\^&*=_+"'\/<>\\\|{}\[\]]/g,""); 
     baseStr = baseStr.replace(/[\t ]+/g,' '); 
     baseStr = baseStr.replace(/\n{1,}/g,'\n\n'); 
     lineArr = baseStr.split(/\n/); 
     for (var i=0;i<lineArr.length;i++) { 
      lineArr[i] = lineArr[i].replace(/(^ +| +$)/g,""); 
     } 
     baseStr = lineArr.join("\n") 
     $("#q").val(baseStr); 
    },100); 
}); 

私はちょうどjsfiddleにdoTimeoutプラグインをコピーするよりはsetTimeoutを使用することが簡単でした。

関連する問題