Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Последняя строка из textarea (https://javascript.ru/forum/css-html/49059-poslednyaya-stroka-iz-textarea.html)

TimohaP 28.07.2014 00:51

Последняя строка из textarea
 
Есть textarea, и в нем могут быть десятки строк, но как извлечь только последнюю?
К примеру:
<textarea>
Строка 1
Строка 2
</textarea>

Как сделать, чтобы вернуло последнюю строку, при этом не зная ее номера

рони 28.07.2014 01:06

TimohaP,
:-?
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<textarea>
Строка 1
Строка 2
</textarea>
<script>
 var a = document.querySelector('textarea').value.split(/[\r\n]+/) ;
     alert(a[a.length-2])
</script>
</body>
</html>

Aetae 28.07.2014 02:09

рони, это очевидно предпоследняя. Совершенно не факт, что в конце будет лишний перенос строки или что оных не будет десять.
<textarea ondblclick="alert( value.match(/([^\r\n]*)\s*$/)[1] )">
Строка 1
Строка 2
</textarea>

рони 28.07.2014 02:41

Aetae,
от 10 переносов как раз сработает нормально -- а вот если нет совсем то выдаст неправильный результат

рони 28.07.2014 03:00

:)
ещё вариантик
<textarea ondblclick="var a=value.split(/$\s*/m) ; alert(a[a.length-1]||a[a.length-2])">
Строка 1
Строка 2
</textarea>

TimohaP 28.07.2014 12:18

Твой код в самый раз (просто первый попробовал). Реализовал так:
function writeToConsole(text){
	refreshConsoleText();
	document.getElementById('console').innerHTML = consoleText + text + '\n';
	return text;
}
function commandSpot(){
	var comm = document.getElementById('console').value.match(/([^\r\n]*)\s*$/)[1] ;
	return comm;
}
//core
refreshConsoleText()
	document.getElementById('console').onkeypress = function() {
	var line = commandSpot();
	switch(line){
		case 'test':
			writeToConsole('Work!');
			break;
		default:
			alert(Undefinde command!);
			break;
	}
}

Получилось даже такаю плюшка о которой я не думал: текст отправляется функции по нажатии єнтр, т.е при переводе на новый рядок

Sweet 28.07.2014 13:24

Чё мудрить-то: регулярка-то - простейшая!
var comm = document.getElementById('console').value.match(/.*$/)[0];

Aetae 28.07.2014 13:33

Sweet, ну какбэ в изначальном примере по такой регулярке найдётся пустая строка. Понятно что формально правильно, но... :)

Sweet 28.07.2014 14:06

Цитата:

Сообщение от Aetae
ну какбэ в изначальном примере по такой регулярке найдётся пустая строка.

Ну так это какбэ потому, что в изначальном примере последняя строка - пустая:D Я думаю, что пример - это просто пример. И если нужна последняя строка - так и получай последнюю строку.:)


Часовой пояс GMT +3, время: 23:57.