我需要帮助解决这个小数问题。通过在同一文本框上制作英尺和英寸。 在以英尺(ft)为单位获得人的高度的情况下,情况是5.12英尺= 6英尺,5.13就像不必要(不是真的,我只是想用英尺和英寸来订购)。
有些会使它成为2个不同的文本框,分别为英尺和英寸。但我想只用一个文本框来尝试它,它不会达到5.12,或者在文本框的情况下只能接受.11英寸。
任何帮助都将不胜感激。
提前致谢。
答案 0 :(得分:1)
除了每次输入字符时解析字符串,我都看不到任何方法。
根据小数点将字符串拆分为英尺和英寸,并禁止任何导致超过11英寸的字符。
您还可以在用户输入字符串时解析字符串,并在表单不正确或不合理时通知她。
但是另一个问题:你这样做的原因是什么,而不是两个下拉?你可以用0到11填充英寸,这很简单。
答案 1 :(得分:1)
使用我的jQuery iMask plugin的一种可能性:
$('#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('');
}
})
答案 2 :(得分: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;
}