0

「。」を1つだけ許可する方法 キープレス中にJavaScriptで?

私はここにコードを持っています:

function allowOneDot(txt) {

        if ((txt.value.split(".").length) > 1) {

          //here, It will return false; if the user type another "."

         } 
}
4

3 に答える 3

6

答えの前に、コメントで言ったことを繰り返します。

そして、ユーザーが一連の期間に貼り付けた場合はどうなりますか?このチェックを完全に無視するようにコンソールでJavaScriptを編集した場合はどうなりますか?検証を正しく処理し、単純化しすぎないようにしてください。

自己責任で進めているので、ユーザー.がテキストボックスに複数の(ピリオド)を入力することを許可しない方法は次のとおりです。

document.getElementById('yourTextboxIDHere').onkeypress = function (e) {
    // 46 is the keypress keyCode for period     
    // http://www.asquare.net/javascript/tests/KeyCode.html
    if (e.keyCode === 46 && this.value.split('.').length === 2) {
        return false;
    }
}

作業デモ

于 2013-01-29T02:05:35.767 に答える
1

本当に1つのドットを許可したい場合は、ユーザーがその中にテキストを貼り付けた場合でも、キーを押すのではなくキーアップを使用する必要があります。復元する必要がある場合に備えて、最後のテキスト値を保持できます。ただし、欠点は、入力値がすでに変更されており、入力すると修正されることです。

(function() {
    var txt = document.getElementById('txt');
    var prevValue = txt.value;

    function allowOneDot(e) {
        var dots = 0;
        var length = txt.value.length;
        var text = txt.value;
        for(var i=0; i<length; i++) {
            if(text[i]=='.') dots++;
            if(dots>1) {
                txt.value = prevValue;
                return false;
            }
        }
        prevValue = text;
        return true;
    }
    txt.onkeyup = allowOneDot;
})();
于 2013-01-29T02:36:30.787 に答える
-1
<input type="text" id="test" onkeyup="floatOnly(this);"/>



<script>
function floatOnly(i){
{
  if ((i.value).length > 0){else{i.value = i.value.replace(".." , ".");i.value = i.value.replace("..." , ".");i.value = i.value.replace(/[^0-9\.]/g , "");}}else{i.value = i.value="0";}}<script>
于 2020-09-30T09:29:34.647 に答える