0

テキストボックスに小数値を許可したくない..コードを書いたが、値全体を削除してから再挿入した場合にのみ機能する..私の問題は、既存の値を編集しようとすると小数になることです.. これが jsfiddleです。これは参照用のコードです:

HTML

<input id="Amt"  type="text" value="$78.00">

jQuery

 $(document).ready(function () {

    $("#Amt").keydown(function (e) {
        if ((!e.shiftKey && !e.ctrlKey && !e.altKey) && ((e.keyCode >= 48 && e.keyCode <= 57) ||
                (e.keyCode >= 96 && e.keyCode <= 105))) {
        }
        else if (e.keyCode != 8 && e.keyCode != 46 && e.keyCode != 37 && e.keyCode != 39 &&
                     e.keyCode != 9) {
            e.preventDefault();
        }
    });

   $("#Amt").keyup(function (e) {
        var value = $(this).val();
       var newValue = parseFloat(value).toFixed(2);
        if (!isNaN(newValue)) {
            $(this).val(newValue);
            $(this).caret(newValue.length - 3, newValue.length - 3);
        }
    });
});
4

3 に答える 3

1

この形式を維持したい場合は、文字列メソッドを使用して小数を切り取り、「.00」を再追加できます。

  $("#Amt").blur(function (e) {
    var value = this.value.replace(/\$/g,"");
    var dotPos = value.indexOf(".");
    var dollars = dotPos>-1?value.substring(0,dotPos):value;
    $(this).val(dollars+".00");
  });

  $("#Amt").blur();

http://jsfiddle.net/ZUj8M/14/

于 2013-01-08T16:44:38.270 に答える
0

そもそも小数がそこに到達しないようにするだけです。http://jsfiddle.net/ZUj8M/7/

$(document).ready(function () {

  var timer;
  $("#Amt").on("keydown paste input",function (e) {
    var el = this,
      origval = this.value;
    clearTimeout(timer);
    timer = setTimeout(function () {
      if (origval != el.value && /\./.test(el.value)) {
        el.value = origval;
        alert("Decimals are not allowed in this field.");
      }
    }, 0);
  });
  if (/\./.test($("#Amt").val())) {
    $("#Amt").val($("#Amt").val().replace(/\./g,""));
  }

});

または、変更を元に戻す代わりに、小数点を削除することもできます。

// el.value = origval;
// alert("Decimals are not allowed in this field.");
el.value = el.value.replace(/\./g,"");
于 2013-01-08T16:36:13.653 に答える
0

指定された値を整数に解析しないのはなぜですか?

var newValue = parseInt(floatValue, 10);

次に、ユーザーがドット「.」を挿入できるようにします。そして .blur()-event で float を int に解析できます...

$("#Amt").blur(function() {
    $this.val(parseInt(jQuery(this).val(), 10));
});
于 2013-01-08T16:57:10.660 に答える