3

最小(0)と最大(500)の値が設定されたjQueryスピナーを使用しています。ユーザーが入力ボックスに数値以外の値(または0〜500の範囲外の値)を直接入力しないようにするにはどうすればよいですか?最小値と最大値は、ユーザーがスピナーボタンを使用する場合は機能しますが、入力フォームに何かを入力する場合は機能しません。

4

4 に答える 4

8

次のような手法を使用して、数値入力を強制できます。

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/

しかし、私はそれをお勧めしません。これは予想されるテキストボックスの動作ではなく、少なくとも一部のユーザーを混乱させる傾向があります。したがって、値が期待される範囲内にない場合は、警告を表示することをお勧めします。

于 2013-01-08T00:31:23.297 に答える
0

readOnlyに設定できます:

document.getElementById('mySpinner').readOnly = true;
于 2013-01-08T00:35:24.020 に答える
0

これははるかに簡単なので、受け入れられている方法ではなく、これを行うための適切な方法だと思います。

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

数字ではない入力はすべて数字1に置き換えられます。||を置き換えることもできます。1は、ユーザーがボックスに入力した番号が無効であることをユーザーに警告するアラートボックスを備えています。

また、JavaScriptバリデーターを使用して、フォーム送信時に番号を確認し、入力を読み取るときにもう1つのサーバー側を使用する必要があります。

于 2014-09-02T04:11:51.747 に答える
0

これは私がそれをした方法です:

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
            }
      });

終わり。

于 2014-09-08T17:13:19.967 に答える