Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   input и пробелы... (https://javascript.ru/forum/dom-window/17578-input-i-probely.html)

Viral 25.05.2011 12:14

input и пробелы...
 
Есть три инпута

Скриптом содержимое этих трех инпутов отправляется в четвертый, скрытый.
И через пробел там расставляется

q1.value+" "+q2.value+" "+q3.value



Возможно ли действие, обратное этому?
т.е. вводим в один инпут три "значения" через пробел, а они отправляются в три других соответствующих инпута?

poorking 25.05.2011 12:20

Viral,

<!DOCTYPE html>
<html></head>
	<meta charset = "utf -8" />
</head></body>

значения, разделенные пробелами
<input id = "#i4"/>

<button id = "#go">go</button>


</body></html>


<script>
function $(id){
	return document.getElementById(id);
}
var inp = $("#i4");

$("#go").onclick = function(){
	var vals = inp.value.replace( /^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, "").split(/\s+/);
	for(var i = 0, il = vals.length; i < il; i ++){
		document.body.appendChild(document.createElement("BR"));
		document.body.appendChild(document.createElement("INPUT")).value = vals[i];
	}
}

</script>

Viral 25.05.2011 12:56

Спасибо, отдельно от основной страницы работает как надо, но отказывается на сайте.

var vals = inp.value.replace( /^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, "").split(/\s+/);


Объясните, пожалуйста, подробнее, что делает эта строчка кода.
Желательно каждый элемент...

IE 8 критует ошибку и говорит, что тут требуется объект.

З.Ы. это не первый и далеко не единственный инпут на странице.

ksa 25.05.2011 13:20

Цитата:

Сообщение от Viral
вводим в один инпут три "значения" через пробел

А в тех "значениях" пробел может присутствовать?

ksa 25.05.2011 13:27

Как вариант...

<!DOCTYPE html>
<html>
<head>
<title>test</title>
<style type="text/css">
</style>
<script type="text/javascript">
function Go() {
	var str=document.getElementById('data').value
	var a=str.split(' ')
	var o=document.getElementsByName('group')
	var i
	for (i=0; i<o.length; i++) {
		o[i].value=a[i]
	}
}
</script>
</head>
<body>
<div>
	<input type='text' name='group' />
	<input type='text' name='group' />
	<input type='text' name='group' />
</div>
<input type='text' id='data' />
<input type='button' value='Set' onclick='Go()' />
</body>
</html>

poorking 25.05.2011 14:08

Viral,
сначала обрезает у строки пробелы по краям(trim): str = str.replace( /^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, "")
потом превращает строку в массив строк, разделив основную по правилу /\s+/ (каждые 1+ пробельный символ) методом строк split

replace
split
регулярные выражения

Viral 25.05.2011 15:37

Спасибо большое :thanks:

Aetae 25.05.2011 16:04

Вообще проще юзать match(/\S+/g) .


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