Сохранить значение в поле ввода html ниже установленного количества - PullRequest
8 голосов
/ 10 марта 2009

У меня есть в поле ввода, которое может содержать только числовые значения (с использованием этот плагин).
Теперь я хочу, чтобы вход был ниже, скажем, 90. Если введено значение, которое превышает этот максимальный предел или не может быть проанализировано, должно быть вставлено предыдущее значение. По умолчанию поле будет содержать «1».

<input id="targetQuantity" name="targetQuantity" type="text" value="1" />

Полагаю, мне нужно каким-то образом поймать текущее значение. Попробуйте разобрать новое значение. Если это допустимое значение, продолжите с этим значением, если нет, верните старое значение.
Поскольку мои навыки JS действительно ограничены, я даже не знаю, какие события доступны для меня, и я нахожу документацию, которую нашел на intarwebz, довольно запутанной.

- EDIT -
В итоге я использовал код Сергея и совет Аарона по удобству использования.
Все, что я сейчас ищу, - это включить / отключить отправку всей формы. Недостаточно просто отключить кнопку отправки.

Ответы [ 3 ]

6 голосов
/ 10 марта 2009
<input id="targetQuantity" name="targetQuantity" type="text" value="1" onkeyup="check(this)" />

... JavaScript:

var v=1;

function check(i) {      
  if(i.value > 100) {
    i.value=v;
    alert("< 100");
  }
  else
    v=i.value;
}
2 голосов
/ 10 марта 2009

Это должно помочь: JavaScript Madness: События клавиатуры

Теперь немного о юзабилити: никогда не меняйте значение при вводе пользователем. Если вы хотите знать почему, попробуйте.

Вместо этого, поверните поле красным (установите цвет фона). Когда форма будет отправлена, запустите проверку еще раз, чтобы убедиться, что пользователь исправил ошибку. Если нет, отобразите сообщение об ошибке inline («значение должно быть <90») где-то рядом с полем и установите фокус на поле. </p>

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

Возможно, вы захотите проверить библиотеку, такую ​​как jQuery или Прототип , поскольку они уже содержат все необходимые вам строительные блоки и исправляют многие ошибки браузера.

1 голос
/ 10 марта 2009

напишите это js в блок кода javascript:

var LastGood = 1;
function CheckValue(input, max) {
    var value = Number(input.value);
    if (NaN == value || input.value>max) { //it is not a number or is too big - revert
        input.value = LastGood;
    } else { //it is ok, save it as the last good value
        LastGood = value;
    }
}

изменить форму ввода на

<input id="targetQuantity" name="targetQuantity" type="text" value="1" onkeyup="CheckValue(this, 90)" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...