我需要帮助解决我遇到的这个小数问题。通过在同一个文本框上制作英尺和英寸。在以英尺(英尺)为单位获得一个人的高度的情况下,情况是 5.12 英尺 = 6 英尺,而 5.13 是不必要的(不是真的,我只是想以英尺和英寸为单位订购)。
有些人会将其设为 2 个不同的文本框,分别为英尺和英寸。但我想只用一个不会达到 5.12 的文本框尝试它,或者在文本框的情况下最多只能接受 0.11 英寸。
任何帮助,将不胜感激。
提前致谢。
我需要帮助解决我遇到的这个小数问题。通过在同一个文本框上制作英尺和英寸。在以英尺(英尺)为单位获得一个人的高度的情况下,情况是 5.12 英尺 = 6 英尺,而 5.13 是不必要的(不是真的,我只是想以英尺和英寸为单位订购)。
有些人会将其设为 2 个不同的文本框,分别为英尺和英寸。但我想只用一个不会达到 5.12 的文本框尝试它,或者在文本框的情况下最多只能接受 0.11 英寸。
任何帮助,将不胜感激。
提前致谢。
除了每次输入字符时解析字符串之外,我看不到任何解决方法。
根据小数点将字符串拆分为英尺和英寸,并禁止任何超过 11 英寸的字符。
您还可以在用户完成输入后解析字符串,并在表单不正确或无意义时通知她。
但是另一个问题:您这样做而不是两个下拉菜单有什么特别的原因吗?您可以用 0 到 11 填充英寸一,这很简单。
使用我的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('');
}
})
您通常通过分别计算整个部分和小数部分来处理这个问题。
要找到小数部分 (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;
}