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


person Andres SK    schedule 13.12.2011    source источник


Ответы (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.

person Kevin B    schedule 13.12.2011