Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Ограничение на ввод символов в поле формы


Автор: slang 31.5.2005, 10:16
Уважаемые!
В JavaScript ни бум-бум, немного понимаю то что вижу, но сам наваять не смогу подскажите, как сделать так, чтобы в поле:
Код

<input type="text" name="telephone" value="">

можно было ввести только цифры. Т.е. чтобы при нажатии на другую кнопку, кроме естественно Enter, Tab символы не появлялись в поле. Если это не возможно, то хотя-бы поправьте следущий код:
Код

<script language="JavaScript">
<!-- hide

// ******************************************************
// Script from Stefan Koch - Voodoo's Intro to JavaScript
//     http://rummelplatz.uni-mannheim.de/~skoch/js/ 
//       JS-book: http://www.dpunkt.de/javascript
//    You can use this code if you leave this message
// ******************************************************

function check(input) {
  var ok = true;

  for (var i = 0; i < input.length; i++) {
    var chr = input.charAt(i);
    var found = false;
    for (var j = 1; j < check.length; j++) {
      if (chr == check[j]) found = true;
    }
    if (!found) ok = false;
  }
 
  return ok;
}

function test(input) {

  if (!check(input, '1', "2", "3", "4",
        "5", "6", "7", "8", "9", "0", "/", "-", " ")) {

    alert("Input not ok.");
  }
  else {
    alert("Input ok!");
  }
}

// -->
</script>

он при вводе любого символа выводит Input not ok, а Input ok! выводит, только если поле пустое
Форма:
Код

<form>
Telephone:
<input type="text" name="telephone" value="">
<input type="button" value="Check"
  onClick="test(this.form.telephone.value)"> 
</form>

Автор: batigoal 31.5.2005, 13:16
Грубо говоря, так:
Код

<html>
<script>
function checkKey()
{
  if (event.keyCode >= 48 && event.keyCode <= 57) return true;
  else return false;
}
</script>
<body>
<form>
Telephone:
<input type="text" name="telephone" onKeyDown="return checkKey()"; >
</form>
</body>
</html>


1. Работает только в IE.
2. Нажатие Enter и Tab тоже блокируется

Автор: Sardar 31.5.2005, 15:00
Что бы работало везде пишем так:
Код
<script>
function checkKey(ev) {
  var key=ev.keyCode? ev.keyCode: ev.charCode;
  return (key >= 48 && key <= 57)? true: false;
}
</script>

<input type="text" name="telephone" onkeypress="return checkKey(event);" >

Автор: slang 31.5.2005, 17:23
в Opere не работает.
нет-ли функции в Java [Модератор: smile ], с помощью которой можно определить введен в поле текст или число.
только, пожалуйста, не отправляйте меня к документации. есть у меня небольшая книжка и на досуге я ее обязательно перечитаю, пролистав ее - не нашел чего-то подходящего.
на подобие как в PHP:
is_numeric - определяет, является ли переменная числом или числовой строкой

Автор: o.s.a. 31.5.2005, 19:22
Я пользуюсь вот такой кострукцией:
Код

function filter(ev) {
  var c=String.fromCharCode(ev.keyCode==0? ev.charCode: ev.keyCode);
  var allow=/[\d\w\x08\s?.,!]/;
  return allow.test(c);
}

Код

onkeypress="return filter(event)"


если нужны только числа, то
Код

 var allow=/[\d]/;

Автор: Sardar 1.6.2005, 00:00
Вот тебе такая функция:
Код
function isNummeric(txt) {
  return /^\s*(?:[\-])?[0-9]+\s*$/.test(""+txt);
}


P.S. елки, подумал что не туда запостил и удалил пост, Aliance, ставь памятку, что тему слил smile

Автор: Aliance 1.6.2005, 13:02

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)