Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (JS) Вставка пробела после каждого 3го элемента. / 17 сообщений из 17, страница 1 из 1
23.09.2009, 15:52
    #36212918
Денис Г.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
Здравствуйте. Не знаю как реализовать следующую плюху.
У меня есть поле ввода. Мне нужно, чтобы функция реагировала на onkeyup и после каждого 3го символа вставляла пробел, причем считая с конца...

Т.е. при вводе
123
значение в поле так и остается
123

При
1234
меняется на
1 234
после нажатия "4"

При
12345678
значение:
12 345 678
и т.д

Додумался пока до
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
function len() {
            var text = document.getElementById('CalcAdena');

            var len = text.value.length;
            var str = "";
            while (len >  0 ) {
                if (len %  3  ==  0 ) str = " " + text.substr(len,  1 ) + str;
                else str = text.substr(len,  1 ) + str;
                len--;
            }
            text1.value = str;
        }
но функция не работает. Подскажите плз как правильно.
...
Рейтинг: 0 / 0
23.09.2009, 15:55
    #36212940
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
Денис Г. , нормальный тестовый пример давай, что бы его можно было скопипастить и подправить.
...
Рейтинг: 0 / 0
23.09.2009, 16:03
    #36212975
Денис Г.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
ASP.NET:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script language="javascript" type="text/javascript">
        function noNumbers(e) {
            var keynum;
            var keychar;
            var numcheck;
            
            if (window.event) // IE
            {
                keynum = e.keyCode;
            }
            else if (e.which) // Netscape/Firefox/Opera
            {
                keynum = e.which;
            }
            keychar = String.fromCharCode(keynum);
            numcheck = /[ 0123456789 ,\b\r]/;
            return numcheck.test(keychar);
        }
        function len() {
            var text = document.getElementById('CalcAdena');
            var text1 = document.getElementById('Label1');

            var len = text.value.length;
            var str = "";
            while (len >  0 ) {
                if (len %  3  ==  0 ) str = " " + text.substr(len,  1 ) + str;
                else str = text.substr(len,  1 ) + str;
                len--;
            }
            text1.innerHTML = str;
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="CalcAdena"  Width="80px" runat="server" onkeypress="return noNumbers(event)" onkeyup="len()"/>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>
.cs и прочие файлы по дефолту
...
Рейтинг: 0 / 0
23.09.2009, 16:05
    #36212978
Денис Г.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
хтмл
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
<html xmlns="http://www.w3.org/1999/xhtml"><head>




<title>

</title>
    <script type="text/javascript" language="javascript">
        function noNumbers(e) {
            var keynum;
            var keychar;
            var numcheck;
            
            if (window.event) // IE
            {
                keynum = e.keyCode;
            }
            else if (e.which) // Netscape/Firefox/Opera
            {
                keynum = e.which;
            }
            keychar = String.fromCharCode(keynum);
            numcheck = /[ 0123456789 ,\b\r]/;
            return numcheck.test(keychar);
        }
        function len() {
            var text = document.getElementById('CalcAdena');
            var text1 = document.getElementById('Label1');

            var len = text.value.length;
            var str = "";
            while (len >  0 ) {
                if (len %  3  ==  0 ) str = " " + text.substr(len,  1 ) + str;
                else str = text.substr(len,  1 ) + str;
                len--;
            }
            text1.innerHTML = str;
        }
    </script>
</head><body>
    <form id="form1" action="Default.aspx" method="post" name="form1">
<div>
<input type="hidden" value="/wEPDwULLTEwMjc4OTM5MzJkZHyFDDeGkBsd0NRleSV24yRKs6kI" id="__VIEWSTATE" name="__VIEWSTATE"/>
</div>

<div>

	<input type="hidden" value="/wEWAgKW/6GEAwK9j5qADLBx9CdASIDwKKmJQlVXuXgOS5tl" id="__EVENTVALIDATION" name="__EVENTVALIDATION"/>
</div>
    <div>
        <input type="text" style="width: 80px;" onkeyup="len()" onkeypress="return noNumbers(event)" id="CalcAdena" name="CalcAdena"/>
        <span id="Label1">Label</span>
    </div>
    </form>
</body></html>
...
Рейтинг: 0 / 0
23.09.2009, 16:06
    #36212981
Денис Г.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
сейчас пытался сделать, чтоб отображалось в другом поле, но по хорошему нужно в то же самое.
...
Рейтинг: 0 / 0
23.09.2009, 16:33
    #36213079
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
Денис Г.хтмл

Это называется "На те Боже, что мне не гоже"...

Как вариант, алгоритм такой:
- читаешь значение
- убираешь из него все пробелы
- крутишь в цикле
- формируешь новую строку у которой будут вставлены пробелы в нужных местах
...
Рейтинг: 0 / 0
23.09.2009, 16:34
    #36213084
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
Забыл добавить
- записываешь сформированую строку в нужное тебе поле
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
23.09.2009, 16:45
    #36213107
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
Это тебе как идея...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
TEST
 n
 s str="123456789"
 s newstr=""
 s dlm=""
 for i=$l(str):- 3 : 1  {
	 s newstr=$e(str,i- 2 ,i)_dlm_newstr
	 s dlm=" "
 }
 w !,newstr
 q
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
23.09.2009, 18:03
    #36213321
kvad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
text?text.replace(/\s/g,'').split('').reverse().join('').match(/\d{1,3}/g).join(' ').split('').reverse().join(''):''
...
Рейтинг: 0 / 0
23.09.2009, 18:18
    #36213360
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
Может подойдет это:
http://t-i-t-o.blogspot.com/2009/07/javascript-input-mask.html

или это:
http://www.webresourcesdepot.com/javascript-input-masks/


Код: plaintext
.mahoune. 
...
Рейтинг: 0 / 0
23.09.2009, 18:19
    #36213362
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
И вот:
http://zendold.lojcomm.com.br/imask/

Код: plaintext
.mahoune. 
...
Рейтинг: 0 / 0
25.09.2009, 09:43
    #36216531
Денис Г.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
Всем спасибо за ответы. Вот до чего доэксперементировался:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        function len() {
            var text = document.getElementById('CalcAdena');
            
            var freeText = text.value.replace(/\s+/g, "");
            var len = freeText.length;
            var str = "";
            
            for (i =  0 ; i <=len; i++){
                if ((i- 1 ) %  3  ==  0 ) str = freeText.charAt(len - i) + " " + str;
                else str = freeText.charAt(len - i) + str;
            }
            str = str.replace(/^\s+/, '').replace(/\s+$/, '');
            
            text.value = str;
        }
...
Рейтинг: 0 / 0
25.09.2009, 10:49
    #36216664
Денис Г.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
Вот, немного модифицировал скрипт. Работа с дробными теперь в формате
12 345,6789
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
        function len() {
            var text = document.getElementById('CalcAdena');

            var freeText = text.value.replace(/\s+/g, "");
            var Mass = new Array();
            Mass = freeText.split(',');
            var len = Mass[ 0 ].length;
            var str = "";

            for (i =  0 ; i <=len; i++){
                if ((i- 1 ) %  3  ==  0 ) str = Mass[ 0 ].charAt(len - i) + " " + str;
                else str = Mass[ 0 ].charAt(len - i) + str;
            }
            str = str.replace(/^\s+/, '').replace(/\s+$/, '');
            if (Mass[ 1 ] != undefined) str = str + ',' + Mass[ 1 ];
           
            text.value = str;
        }
...
Рейтинг: 0 / 0
25.09.2009, 15:04
    #36217495
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
Повлияло открытие Европейского Оффа?

Код: plaintext
.mahoune. 
...
Рейтинг: 0 / 0
28.09.2009, 03:39
    #36219651
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
Денис Г.Вот, немного модифицировал скрипт. Работа с дробными теперь в формате
12 345,6789
радует, что сами написали, но в данной ситуации можно было решить проблему и поиском (гляньте решение, оно немного другое): /topic/559781
...
Рейтинг: 0 / 0
29.09.2009, 11:56
    #36222214
Денис Г.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
если честно - искал, но видимо не смог по-человечески запрос написать.))
В js я нуб, так что решения в почти-одну-строкчу слишком сложны для понимания
...
Рейтинг: 0 / 0
30.09.2009, 00:45
    #36224001
illion
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(JS) Вставка пробела после каждого 3го элемента.
Денис Г.если честно - искал, но видимо не смог по-человечески запрос написать.))
это да, извечная проблема скл.ру. С поиском тут туговато, я и сама часто ищу методом научного тыка. Внешним поисковиком (тем же гуглом, к примеру) половчее будет.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (JS) Вставка пробела после каждого 3го элемента. / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]