jQuery Spinner: нечисловые значения

Я использую jQuery Spinner с установленными значениями min (0) и max (500). Что можно сделать, чтобы пользователь не мог напрямую вводить нечисловые значения (или значения вне диапазона 0-500) в поле ввода? Значения min и max работают, когда пользователь использует вращающиеся кнопки, но не когда что-то вводится в форму ввода.

4 ответа

Решение

Вы можете форсировать числовой ввод, используя такую ​​технику:

var MIN = 0;
var MAX = 500;

$('#foo').on('keyup', function(e) {
  var v = parseInt($(this).val());
  if (isNaN(v)) {
     return $(this).val(MIN);
  }
  if ($(this).val() < MIN) {
     $(this).val(MIN);
  } else if ($(this).val() > MAX) {
     $(this).val(MAX); 
  } else {
     $(this).val(v);
  }
});

(См. Пример: http://jsfiddle.net/foxbunny/ustFf/)

Но я не рекомендую это. Это не ожидаемое поведение текстового поля, и это может сбить с толку, по крайней мере, некоторых пользователей. Поэтому лучше просто отобразить предупреждение, если значение не находится в ожидаемом диапазоне.

Вы можете установить его только для чтения:

document.getElementById('mySpinner').readOnly = true;

Вот как я это сделал:

jQuery( "#spinner" ).spinner({ min: 0 });

jQuery( "#spinner").keyup(function() {
            if(  isNaN (jQuery(this).val() )){ //Only numbers !
                jQuery(this).prop("value", "0") ; //Back to 0, as it is the minimum
            }
      });

Готово.

Я думаю, что это правильный способ сделать это, а не принятый способ, поскольку это намного проще.

$('YOURID/CLASS').spinner({
    min: 1,
    max: 100,
    change: function (event, ui ) {
        $(this).spinner('value', parseInt($(this).spinner('value'),10) || 1);
    }
});

Любой ввод, который не является числом, будет заменен номером 1. Вы также можете заменить || 1 с окном предупреждения, чтобы предупредить пользователя о том, что номер, который он вводит в поле, недопустим.

Вы также должны использовать валидатор javascript для проверки числа при отправке формы, и еще одну на стороне сервера при чтении ввода в.

Другие вопросы по тегам