Очистка значения текстовой области: обрезать пробелы во всех строках
Я установил событие вставки для очистки значения 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 использует плагин Бен Алмана doTimeout, потому что событие вставки запускается до того, как текст станет доступен.
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.