2014-11-07 4 views
1

Извините im javascript, в настоящее время им грозит проблема при копировании пользователем статьи, содержащей много нового пространства строк. как я могу обрезать его и сделать его только 1 новой строкой? и как ограничить пользователя нажатием клавиши «enter» (новая строка)?Textarea limit enter нажать и обрезать пробел из новой строки

Пример, когда скопировать текст из другого источника и вставить в текстовое поле будет отображаться как это:

This is 
        //new line 
        //new line 
        //new line 
        //new line 
        //new line  
Orange 
        //new line 
        //new line 
        //new line 
Not apple 

, как это сделать, как, после копирования в текстовое поле/ввода из текстового поля

This is 

orange 

not apple 

FIDDLE ДЕМО = FIDDLE

my fiddle output : 
------------------ 
This is 
Orange 
not apple 

Expected output : 
----------------- 
This is 

Orange 

not apple 

Любая помощь будет оценена по достоинству. Благодаря!

+0

Вы просто заменить символ новой строки с одной строки, как этот 'string.replace (/ \ N \ S * \ п/г, '\ п');' – adeneo

+0

Привет @ adeneo, извините, не могли бы вы показать это на моей скрипке? – jschew

+0

Уверенный -> ** http: //jsfiddle.net/adeneo/ddp09zvm/4/** – adeneo

ответ

0

Если я правильно понимаю вас, вы можете запретить пользователям вставлять разрывы строк, нажимая кнопку . Введите, добавив слушателя. Что-то вроде этого:

var textarea = document.getElementById("myTextArea"); 
textarea.addEventListener("keydown", function (e) { 
    if (e.keyCode == 13) { // keyCode 13 corresponds to the Enter key 
     e.preventDefault(); // prevents inserting linebreak 
    } 
}); 

JSFiddle here

Что касается замены нескольких новых линий в строке, как было отмечено @adeneo в комментариях, вы можете использовать функцию string.replace() в JavaScript. Вы можете добавить еще один слушатель на textarea, который прослушивает на paste события, как это:

textarea.addEventListener("paste", handler); 

где handler функция вы можете определить, что уберет разрывы строк. Вот скрипка, показывающая это: JSFiddle

+0

Привет @southrop, спасибо за объяснение, могу ли я ограничить пользователей нажатием клавиши Enter до двух раз? Я пробовал метод odeneo, но он обрезает всю новую строку. Можете ли вы снова проверить мою демонстрацию скриптов? я обновился. Большое вам спасибо – jschew

+0

Если вы хотите иметь пустую строку между вашим текстом, вам нужно будет иметь * две * новые строки, а не только одну. Поэтому попробуйте использовать '\ n \ n', а не просто' \ n' – southrop

+0

Я добавил [this] (http://jsfiddle.net/dofqLoyu/3/) новую скрипту, показывающую 'string.replace()' работу и создание вы хотите. Что касается ограничения количества раз, когда пользователь может нажать Enter, вы можете попробовать создать счетчик какого-то типа.Я не уверен, что ваш случай использования для этого, поэтому я не могу дать солидный ответ. – southrop

0

Вы ожидаете два \ n для вашего текста. проверьте мой ответ, я покажу его с jquery и без jquery. Как я понимаю, вы можете достичь своего требования функцией размытия.

$("#withjquery").blur(function(){ 
 
$("#withjquery").val(($("#withjquery").val().replace(/\n\s*\n/g, '\n\n'))); 
 
}); 
 

 
function doFormat() 
 
{ 
 
    document.getElementById("withoutjquery").value = document.getElementById("withoutjquery").value.replace(/\n\s*\n/g, '\n\n'); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
 
<textarea id="withjquery" name="withjquery" rows="5" cols="40" ></textarea> 
 

 
<textarea id="withoutjquery" name="withoutjquery" rows="5" cols="40" onblur="doFormat()" ></textarea>

Смежные вопросы