0

この小数の問題について助けが必要です。同じテキストボックスにフィートとインチを作成する。人の身長をフィート (フィート) で取得する場合、状況は 5.12 フィート = 6 フィートであり、5.13 は不要のようです (そうではなく、フィートとインチで注文しようとしているだけです)。

いくつかは、それぞれフィートとインチになる 2 つの異なるテキスト ボックスになります。しかし、5.12に達しないテキストボックスを1つだけ試してみたい、またはテキストボックスの場合、インチで最大.11しか受け入れない.

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

前もって感謝します。

4

3 に答える 3

1

文字を入力するたびに文字列を解析する以外に、これを回避する方法はありません。

文字列を小数点に基づいてフィートとインチに分割し、11 インチを超える文字は使用できません。

また、ユーザーが入力を完了したときに文字列を解析し、フォームが正しくないか無意味であるかどうかをユーザーに通知することもできます。

しかし、別の質問: 2 つのドロップダウンではなく、このようにしている特定の理由はありますか? インチ 1 を 0 から 11 で埋めることができ、それは簡単です。

于 2013-01-14T21:37:00.257 に答える
1

jQuery iMask プラグインを使用した 1 つの可能性:

$('#i4').iMask({
      type   : 'fixed'
    , mask   : '9\' 99\"'
    , sanity : function( val ){
        val = /([\d ]\' )([\d ])([\d ])\"/.exec( val );

        (val[2]>1) && (val[3]=val[2]) && (val[2]='0');
        (val[2]==1) && (val[3]>1) && (val[3]='1');

        val.shift();
        return val.join('');
    }
})

デモ

于 2013-01-14T21:45:31.353 に答える
0

通常、これは、整数部と小数部を別々に計算することで対処します。

小数部分 (0.12) を見つけるには、元の部分 (5.12) から全体部分 (5) を引くだけです。もちろん、1 フィートのインチ数を掛けます。

var height = 5.12;
var feet = Math.floor(height);
var inches = Math.floor( 12.0 * (height-feet) );

そこで切り捨てました。最も近いものに丸めたい場合は、次のことができます。

var inches = Math.round( 12.0 * (height-feet) );
if( inches == 12 ) {
    feet++;
    inches = 0;
}
于 2013-01-14T21:35:57.527 に答える