powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (js) Как сделать проверку ввода в текстовое поле?
11 сообщений из 11, страница 1 из 1
(js) Как сделать проверку ввода в текстовое поле?
    #36178482
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.bykovas.lt/temp/helpmeru.htm

Надо, чтобы во втором текстбоксе, если пользователь нажал на запятую, ввелась точка и "далее по инструкции" (то есть как если бы действительно была нажата точка).

Код: 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.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
<!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>
<meta http-equiv="Content-Language" content="en-us" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>I need help</title>

<script type="text/javascript">

   function validatenumber(event, obj)
   {
    var code = (event.which) ? event.which : event.keyCode;
    var character = String.fromCharCode(code);
    if ((code >=  48  && code <=  57 ))
    {
      if (obj.value =="0")
        return false;
      if (!isNaN(obj.value))
      {
        if (obj.value =="0.00" && code ==  48 )
        {
          alert("Value cannot be less than 0.001");
          return false;
        }
      }
      return true;
  }
    else if (code ==  46 ) {
        if (obj.value.indexOf(".") <  0 ) {
            if (obj.value.length ==  0 )
                obj.value = "0";
            return true;
        }
    }
    else if (code ==  8  || code ==  116 )
    {
      return true;
    }
    else if (code >= 37  && code <=  40 )
    {
      return true;
    }
    return false;
  }

  function validatefield(obj)
  { 
    if (obj.value.indexOf(".") == obj.value.length- 1 )
    {
      obj.value = obj.value.substring( 0 , obj.value.length- 1 )
  }
  else if (obj.value.indexOf(",") == obj.value.length- 1 ) {
      obj.value = obj.value.substring( 0 , obj.value.length -  1 )
  }
    else if (isNaN(obj.value))
    {
      obj.value = "";
    }
    else if (obj.value <=  0 . 001 )
    {
      obj.value = "";
      alert("Value cannot be less than 0.001.");
    }
  }

</script> 

</head>

<body>

<form method="post">
				<input name="Text1" type="text" onkeyup="if(this.value.indexOf(',') != -1) this.value = this.value.replace(',', '.')" /> 
				- <span lang="lt">здесь запятую меняет на точку (как на webmoney, очень красиво)</span><br />
				<br />
				<br />
				<input name="Text2" type="text" onkeypress="return validatenumber(event, this);"
        onblur="validatefield(this)"/> - а здесь сразу куячит, если вводится не duoble<br />
				<br />
				надо: чтобы во втором текстбоксе, если пользователь нажал на запятую, ввелась точка и "далее по инструкции"</form>

</body>

</html>
...
Рейтинг: 0 / 0
(js) Как сделать проверку ввода в текстовое поле?
    #36179002
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<script>
function validate(obj,e)
{
	e = e || window.event;
	var code = e.keyCode || e.which;
	if (code ==  8  || code ==  46  || code ==  116  || code >= 37  && code <=  40 ) return true;
        var ch = String.fromCharCode(code);
	if (ch == ',') ch = '.';
	if (!(/^\d+(\.\d*)?$/.test(obj.value + ch))) return false;
	else {obj.value += ch; return false;}
}
</script>
<input type="text" onkeypress="return validate(this,event)" />
ну и на onblur что-нить повесить, дабы защититься от вставки бреда через буфер. Или лучше на onchange, тогда при потере фокуса проверка будет произведена только в том случае, если значение изменилось.
...
Рейтинг: 0 / 0
(js) Как сделать проверку ввода в текстовое поле?
    #36179040
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
могу ввести 1.1212. (то есть вторую точку)
про вставку из буфера будет другой вопрос ж)
...
Рейтинг: 0 / 0
(js) Как сделать проверку ввода в текстовое поле?
    #36179138
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ааа, точно... Япона мать, когда же все будет по-человечески?! В общем, история вопроса такая: есть три свойства эвента - charCode, keyCode и which. Для '.' в ФФ они будут равны 46, 0, 46; в ИЕ - undefined, 46, undefined. Для клавиши Del в ФФ - 0, 46, 0; в ИЕ - не обрабатывается. Про оперу не знаю. В общем, я плавно клоню к тому, что если Вы готовы для пользы дела отказаться от использования кнопки Del в этом контроле, то можно просто убрать условие code==46.
...
Рейтинг: 0 / 0
(js) Как сделать проверку ввода в текстовое поле?
    #36179177
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да чёрт с ним с дилитом, откажемся.
а как запретить вставку из буфера? )
...
Рейтинг: 0 / 0
(js) Как сделать проверку ввода в текстовое поле?
    #36179287
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возьми библиотечный валидатор и не мучайся ... он не дает вставить запрещенные знаки даже из буфера обмена. Чего велосипед выдумывать?
...
Рейтинг: 0 / 0
(js) Как сделать проверку ввода в текстовое поле?
    #36179288
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не во всех браузервх работает: onpaste="return false;"
...
Рейтинг: 0 / 0
(js) Как сделать проверку ввода в текстовое поле?
    #36179316
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckВозьми библиотечный валидатор и не мучайся ... это то гамно, которое на точки (запятые) вопит, но позволяет из буфера вставлять "+2", "1E23" ? нихачу :)
...
Рейтинг: 0 / 0
(js) Как сделать проверку ввода в текстовое поле?
    #36179341
Фотография illion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IDVsbruckВозьми библиотечный валидатор и не мучайся ... он не дает вставить запрещенные знаки даже из буфера обмена.
а внутри никогда не копался? Какими методами достигается запрет вставки? Интересно стало...

Cheerful Calf,
Валидаторы разные бывают... Очевидно, надо уточнить у IDVsbruck какой он в виду имел. А если таки руками - то используется проверка постфактум на onblur или onchange. Можно прописать и onpaste="return false" (ИЕ поймет, остальные пропустят), и onchange. На onchange обычно значение проверяется на соответствие шаблону, в случае неудачи - значение стирается и полю возвращают фокус. Как дополнительное средство привлечения внимания юзера к возникшей проблеме - можно показывать рядом с полем div с сообщением о косяке во введенном значении.
...
Рейтинг: 0 / 0
(js) Как сделать проверку ввода в текстовое поле?
    #36179350
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё можно проверку повесить ка онкейуп и онмаусеуп, взамен онпасте.
...
Рейтинг: 0 / 0
(js) Как сделать проверку ввода в текстовое поле?
    #36179371
Фотография Cheerful Calf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никак не соображу, что исправить чтобы с курсором правильно работало?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
        function validate(obj, e) {
            e = e || window.event;
            var code = e.keyCode || e.which;
            if (code ==  8  || code ==  116  || code >=  37  && code <=  40 ) return true;
            var ch = String.fromCharCode(code);
            if (ch == ',') ch = '.';
            if (code ==  46 ) {
                if (obj.value.indexOf(".") <  0 ) {
                    if (obj.value.length ==  0 )
                        obj.value = "0";
                    return true;
                }
            }
            if (!(/^\d+(\.\d*)?$/.test(obj.value + ch))) return false;
            else { obj.value += ch; return false; }
        }
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / (js) Как сделать проверку ввода в текстовое поле?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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