0

テキストフィールド番号を検証するためのこのコードがあります。

.このコードは正常に動作しますが、唯一の問題は、 (ドット)を入力できないことです。私のテキストフィールドは金額用です。金額は 222.234234 または 222 にすることができます。ユーザーが以下のスクリプトでピリオドを入力できるようにするには、どのコードを追加する必要がありますか

function ValidateNum(input,event)
    {
        var keyCode = event.which ? event.which : event.keyCode;
        if((parseInt(keyCode)>=48 && parseInt(keyCode)<=57) || parseInt(keyCode)==08 ||  parseInt(keyCode)==09 || parseInt(keyCode)==127 )  
        {
           return true;
        }
        return false;
    }

テキストフィールド

<input type="text" name="from_amount" onkeypress="return ValidateNum(this,event)" id="from_amount" placeholder="    Type to convert" />`

ですから、この問題を解決するのを手伝ってください。

4

2 に答える 2

1

のキーコード.は 190です。
このリストはこちらで確認できます-> http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

于 2013-04-22T17:31:17.377 に答える
1

入力された各文字を検証するのではなく、文字列全体を検証しないのはなぜですか?

これを行う:

//I am assuming that input is the text element
function validateNumber(input) {
    //newer browsers should have .trim(). Otherwise you can do something like:
    //   input.value.replace(/^\s+|\s+$/g, "");
    return /^\d+(\.\d+)?$/.test(input.value.trim()); 
}

現在の検証関数は、使用が文字のみを入力する場合を考慮します.か? 複数の.キャラクターはどうですか?値123.、 または1.43.3、または は1..2どうですか? 現在の関数は、その文字のコンテキスト (つまり、周囲のもの) を確認せずに、入力された文字を検証するだけのようです。

onkeypress別の注意として、属性を使用する代わりに、jQuery などを使用するか、input 要素にバインドすることを検討してください。このバインド方法は多かれ少なかれ推奨されておらず、推奨されていません。また、この検証方法により、紛らわしいキー押下イベントが防止されます。フォームに入力した後にフォーム全体を検証するか、入力中のテキスト フィールドを無効としてマークすることをお勧めします。

ユーザーがそのフィールドに入力できる内容を制限する代わりに、HTML5typeの値を使用することもできます。そうすれば、検証を行う必要さえありません。numbertext

于 2013-04-22T17:32:04.267 に答える