0

フォーム入力フィールドにintまたはfloatのいずれかのみを入力できるようにする方法について、ある種の方向性が必要です。検証は、キーアップイベントで行う必要があります。私が抱えている問題は、たとえば、1.2キーアップイベント関数内のチェックに入ると、1.どちらが数値ではないかを確認することです。

これが私が持っているコードです:

document.id('inputheight').addEvent('keyup', function(e) {
    this.value = this.value.toFloat();
    if (this.value == 'NaN') {
        this.value = 0;
    }         
});

どんな助けでも大歓迎です!

4

1 に答える 1

1

キーアップ時にフィールドの値をクリーンアップするだけで済みます。このような何かがトリックを行う必要があります:

this.value = this.value.replace(/([^\d.]+)?((\d*\.?\d*)(.*)?$)/, "$3");

正規表現は、値を最初に検出した数値文字列に即座に置き換えます。

([^\d.]+)?  // optionally matches anything which is not
            // a number or decimal point at the beginning

(\d*\.?\d*) // tentatively match any integer or float number

(.*)?$      // optionally match any character following
            // the decimal number until the end of the string
于 2012-07-19T11:55:52.097 に答える