3

入力にドット(コンマではなく)を含むfloat値のみを常に使用したいと思います。

<input type="text" class="dot"> <br />
<input type="text" class="dot"> <br />
<input type="text" class="dot"> <br />

$('.dot').keydown(function(){
        $(this).val($(this).val().toString().replace(/\,/g, '.'));  
})

これはコンマをドットに置き換えますが、これは1ドット以上であってはなりません...これは[0-9]と。のみを受け入れる必要があります。

他の[0-9]および。とは異なる値を入力した場合。次に、この値を削除する必要があります-''。

どうすればそれを作ることができますか?

http://jsfiddle.net/ZtkBW/

4

7 に答える 7

11

Hiyaデモ http://jsfiddle.net/9Ry9t/ または http://jsfiddle.net/ZtkBW/2/ または http://jsfiddle.net/HJnLD/

charactersソリューションとは少し異なりますが、これを使用したい場合は、テキストボックスに入力できません。

このソリューションは、数値の完全な検証を行い、フロートの場合はかかりません(ドット)

コードサンプル

$('.number').keypress(function(event) {
    if(event.which < 46
    || event.which > 59) {
        event.preventDefault();
    } // prevent if not number/dot

    if(event.which == 46
    && $(this).val().indexOf('.') != -1) {
        event.preventDefault();
    } // prevent if already dot
});​
于 2012-05-09T10:21:36.173 に答える
2

parseFloatこれは、文字列で見つかった最初の数値を解析でき、文字indexOfの最初のインデックスのみを返すという事実を回避するための本当にひどいifステートメントです(すべてのインデックスではありません)。

の値を変数に格納する方が賢明かもしれませんが、それ$(this).val()は読者の練習問題として残しておきます。(今は時間がありません)

if(!isNaN(parseFloat($(this).val()) && $(this).val().indexOf(".") > -1 && $(this).val().indexOf(".") == $(this).val().lastIndexOf(".")) { 
    // do something, your value is a valid float
}
于 2012-05-09T10:19:21.113 に答える
2

あなたはこれを試すことができます:

http://jsfiddle.net/ZtkBW/5/

var parseInput = function(val) {
  var floatValue = parseFloat(val);
  return isNaN(floatValue) ? '' : floatValue;
}

$('.number').keyup(function(){
  var value = $(this).val()+'';
  if (value[value.length-1] !== '.') {
    $(this).val(parseInput(value));
  }
}).focusout(function(){
  $(this).val(parseInput($(this).val()+''));
})

無効な場合に文字が表示されないように、キーアップを使用しました。コメントで述べたように、私もフォーカスアウトを使用しました。最後に入力された文字が「。」の場合は解析しません。10進値を入力できないためです。

于 2012-05-09T10:28:54.477 に答える
0
$('.dot').keydown(function(){
    $(this).val($(this).val().toString().replace(/^[0-9]\./g, ',')
    .replace(/\./g, ''));
})​

それがどのように振る舞うか

于 2012-05-09T10:20:35.850 に答える
0

あなたが何をしたいのかよくわかりません
が、これはどうですか

$(this).val(parseFloat($(this).val()) || 0); 
于 2012-05-09T10:22:27.423 に答える
0

私は同じ問題を抱えていました-整数または小数の入力のみを受け入れるためにテキスト入力が必要でした(1つのみ)。いくつかの解決策を混ぜる必要がありましたが、これは現在機能しています:

$(".dot").keyup(function(event){
    this.value=this.value.replace(/[^0-9.]/g,'');
    var parts=this.value.split(".");
    var decimal=false;
    for(var part in parts)
    {
        if(part==0) this.value=parts[part];
        if(part==1) this.value=this.value+"."+parts[part];
    }
});
于 2014-10-15T04:04:35.327 に答える
-1

これを試して :

$("#txtSellerPrice").keydown(function (e) { 
    if (e.keyCode == 110 && this.value.split('.').length == 2) 
    { 
        e.preventDefault(); 
    } 
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 190,110]) !== -1 ||         (e.keyCode == 65 && ( e.ctrlKey === true || e.metaKey === true ) ) ||                   (e.keyCode >= 35 && e.keyCode <= 40)) {  return;  } if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) 
    { e.preventDefault(); } 
    });
于 2017-02-24T10:28:12.140 に答える