0

我需要帮助解决我遇到的这个小数问题。通过在同一个文本框上制作英尺和英寸。在以英尺(英尺)为单位获得一个人的高度的情况下,情况是 5.12 英尺 = 6 英尺,而 5.13 是不必要的(不是真的,我只是想以英尺和英寸为单位订购)。

有些人会将其设为 2 个不同的文本框,分别为英尺和英寸。但我想只用一个不会达到 5.12 的文本框尝试它,或者在文本框的情况下最多只能接受 0.11 英寸。

任何帮助,将不胜感激。

提前致谢。

4

3 回答 3

1

除了每次输入字符时解析字符串之外,我看不到任何解决方法。

根据小数点将字符串拆分为英尺和英寸,并禁止任何超过 11 英寸的字符。

您还可以在用户完成输入后解析字符串,并在表单不正确或无意义时通知她。

但是另一个问题:您这样做而不是两个下拉菜单有什么特别的原因吗?您可以用 0 到 11 填充英寸一,这很简单。

于 2013-01-14T21:37:00.257 回答
1

使用我的jQuery iMask 插件的一种可能性:

$('#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)。当然乘以一英尺的英寸数。

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 回答