2

ユーザーが入力テキスト要素に負の値を入力できないようにする最善の方法は何ですか?

現在、ぼかしのフィールド値を確認していますが、誰かがより良い解決策を持っていることを願っています。

$(".payment").blur(function() {
    var payment = getAmount($(this).val());
    if(!isNaN(payment) && amount >= 0) {
        $(this)
            .css("color", "black")
            .val(currency(payment));
    } else {
        if(amount < 0) showMessage("Negative amounts are not allowed", "error");
        $(this).css("color", "red");
    }
});

function getAmount(strAmount) {
    var amount = new String(strAmount).replace(/\$/g, "").replace(/,/g, "");
    return parseFloat(amount);
}
4

5 に答える 5

9

jQuery を使用.keypress()して、- キーのデフォルト アクションを防ぐことができます。例: http://jsfiddle.net/5cgXg/


$("#target").keypress(function(event) {
  if ( event.which == 45 || event.which == 189 ) {
      event.preventDefault();
   }
});
于 2012-06-04T18:38:03.673 に答える
2

これでうまくいくはずです:

$(".payment").keydown(function(event) {
    if (event.keyCode == 45 ) { event.preventDefault(); }   
});

これにより、"-" (45) の文字コードが検出されたときに keydown イベントが登録されなくなります。

于 2012-06-04T18:38:24.043 に答える
2

e.whichキーコード (など) を使用したくない場合を想定してe.keyCode、さらに 1 つのオプションを示します。

$('#a').blur(
    function(){
        var v = $(this).val(),
            t = parseInt(v,10),
            b = isNaN(t);
        if (b){
            $(this).val('');
        }
        else {
            $(this).val(Math.abs(t));
        }
    });​

JS フィドルのデモ

参考文献:

于 2012-06-04T18:49:47.013 に答える
1

jQuery のkeypressまたはkeydownイベントを使用して、すべてのキーの入力に対してテストできます。

検証が必要なフィールドが他にもある場合は、jQuery Validationプラグインを検討してください。

于 2012-06-04T18:39:30.587 に答える
0

すべての答えをありがとう。

これが私が最終的に得たものです:

$("input.payment").keypress(function(e) {
    validateNumeric(e);
});

function validateNumeric(evt) {
   var theEvent = evt || window.event;
   var key = theEvent.keyCode || theEvent.which;
   key = String.fromCharCode( key );
   var regex = /[0-9]|\./;
   if( !regex.test(key) ) {
      theEvent.returnValue = false;
      if(theEvent.preventDefault) theEvent.preventDefault();
   }
}
于 2012-06-04T18:43:58.690 に答える