2011-12-13 19 views
0

我已經設置了粘貼事件消毒textarea的值都行。它已經做了我需要的一切,除了一件事:在所有行的開始和結尾修剪空白。有任何想法嗎?消毒一個textarea值:修剪空格中

$('#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:使用im本alman的doTimeout plugin,因爲文字是可用之前paste事件被炒魷魚。

回答

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); 
}); 

對我來說,只是使用的setTimeout比doTimeout插件複製到的jsfiddle這是比較容易。