Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.01.2010, 22:24
deman455 вне форума Посмотреть профиль Отправить личное сообщение для deman455 Найти все сообщения от deman455
  № 1  
Ответить с цитированием
deman455
[+1 25.04.11]

Регистрация: Nov 2009
Сообщений: 481
Отправить сообщение для deman455 с помощью ICQ
По умолчанию Разрешить только 1 пробел

Как такое сделать ?

Добавлено через 30 секунд
Что бы в инпут поле между словами можно было только один пробел

Старый 30.01.2010, 22:41
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS1/AS2:
tf.onChanged = function()
{
	this.text = this.text.split("  ").join(" ");
}

Старый 30.01.2010, 22:48
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 3  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
silin, а если сразу четыре пробела влепить? Больше двух, одним словом.

Старый 30.01.2010, 22:56
fessor вне форума Посмотреть профиль Отправить личное сообщение для fessor Найти все сообщения от fessor
  № 4  
Ответить с цитированием
fessor

Регистрация: Oct 2009
Сообщений: 101
в уже написанном тексте отыскать все двойные пробелы и заменить их на одинарные
повторять пока перестанут находится двойные пробелы

или отслеживать последние два символа в поле инпут, если оба пробелы то заменять на один

Старый 30.01.2010, 22:58
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 5  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ага, про копипаст не подумал
Код AS1/AS2:
while(this.text.indexOf("  ")>-1) this.text = this.text.split("  ").join(" ");

Старый 30.01.2010, 23:42
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 6  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код AS1/AS2:
var s:String = "    a  b       c d  e  ";
var i:Number = 0;
var j:Number = s.length;
var c:String;
var buffer:Array/*String*/ = [];
var state:Boolean = true;
while (i < j)
{
	c = s.charAt(i);
	if (c == " ")
	{
		if (state)
		{
			state = false;
			buffer.push(c);
		}
	}
	else
	{
		state = true;
		buffer.push(c);
	}
	i++;
}
trace("|" + buffer.join("") + "|");
Вообще-то, если производительность имеет значение, то, пожалуй, что так было бы лучше, но поди знай, что там будет медленнее и что быстрее + от количества последовательных пробелов зависит и т.д. Но вцелом, создавать и удалять временные массивы - не самый хороший подход...

EDIT:
Код AS1/AS2:
var s:String = "    a  b       c d  e   ";
var i:Number = 0;
var j:Number = s.length;
var c:String;
var buffer:Array/*String*/ = [];
var state:Boolean = true;
var start:Number = 0;
 
while (i < j)
{
	c = s.charAt(i);
	if (c == " " && start != i - 1)
	{
		buffer.push(s.substring(start, i));
		start = i;
	}
	else if (c == " ") start++;
	i++;
}
if (s.charAt(s.length - 1) == " ") buffer.push(" ");
trace("|" + buffer.join("") + "|");
Или как-нибудь так...
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 31.01.2010 в 00:14.
Старый 30.01.2010, 23:51
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 7  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Ну тогда и мой вариант:
Код AS1/AS2:
text.onChanged = function() {
	var a = this.text;
 
	if (a.charAt(this.length - 2) == " " && a.charAt(this.length - 1) == " ") {
		this.text = a.slice(0, a.length - 1);
	}
 
};

Старый 30.01.2010, 23:57
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 8  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ну канеш, думать о производительности надо всегда
но здесь-то инпут поле, разовая операция: в чем нужда оптимизировать? в чем выигрыш, кроме неочевидности кода?

Старый 31.01.2010, 00:19
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от samana Посмотреть сообщение
Ну тогда и мой вариант:
Код AS1/AS2:
text.onChanged = function() {
	var a = this.text;
 
	if (a.charAt(this.length - 2) == " " && a.charAt(this.length - 1) == " ") {
		this.text = a.slice(0, a.length - 1);
	}
 
};
Ну, а если копипаст?

Цитата:
Сообщение от silin Посмотреть сообщение
ну канеш, думать о производительности надо всегда
но здесь-то инпут поле, разовая операция: в чем нужда оптимизировать? в чем выигрыш, кроме неочевидности кода?
Ну, код не обязан быть неочевидным, его можно потом аккуратно упаковать в функцию типа StringUtils.removeWhite( input : String ) : String и использовать не только для текстового поля
Просто мне тут недавно попался (в нашей же конторе) один "мастер яваскрипта и копипаста международного класса", и этот милый человек скопировал из какого-то индейского туториала функцию проверки строки на возможность конвертации в число... как бы функция не всегда работала, и вообще в туториале была только ради примера... но, как обычно, она была применена для валидации суммы в $$ в форме покупки чего-то на нашем же сайте :-) слава богу у нас никто ничего никогда купить не пытался :-)
Так я это к тому, что лучше написать так, чтобы ультимативно на все случаи жизни, чем потом циллиндрический гроб заказывать :-)
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 31.01.2010 в 00:30.
Старый 31.01.2010, 00:39
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 10  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Ну, а если копипаст?
Да, тут уже не сработает, вы правы.

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 01:58.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.