我有一个有趣的问题,我想与大家分享。在表单上,我们重复分配百分比的行。最后,所有行组合需要等于100.000(或100%)。如果确实如此,则通过验证并提交表格。我们要求输出3个小数点。
但是通过以下组合,表单无法满足验证。真的很奇怪。
HTML
<!-- Repeating Field in Rows -->
<input type="text" name="txtDistributionPerc" id="txtDistributionPerc"
onkeypress='return chkKeys(event, "C");' maxlength="7"
onblur="txt_blur_calculateFundingTotal(this);"></input>
JavaScript JQuery
// Filters out invalid keystrokes
function chkKeys(e,type){
var keynum = e.keyCode;
var keychar = String.fromCharCode(keynum);
switch (type){
case 'C': /* currency ($, numbers, .) */
valChk = /[0-9\$\.]/;
return valChk.test(keychar);
break;
default:
break;
}
}
//Calculates a specific one based on the element passed
function txt_blur_calculateFundingTotal(ele)
{
if(ele)
{
var total = 0.000;
$(ele).closest('table').find('input[name=txtDistributionPerc]').each(function (i) {
this.value = formatCurrency(this.value, 3, '.', '');
var tmp = parseNumber(this.value);
if(tmp < 0.000 || tmp > 100.000) {
this.value = '0.000';
tmp = 0.000;
}
total+=tmp;
});
$(ele).closest('table').find('input[name=txtTotalPerc]').val(formatCurrency(total, 3, '.', ''));
if(total != 100.000 && total != 0.000)
{
$(ele).closest('table').find('input[name=txtTotalPerc]').addClass('error');
$(ele).closest('table').find('input[name=txtTotalPercValidated]').val('');
}
else
{
$(ele).closest('table').find('input[name=txtTotalPerc]').removeClass('error');
$(ele).closest('table').find('input[name=txtTotalPercValidated]').val('true');
}
}
}
有更好的方法吗?谢谢你的期待。
答案 0 :(得分:0)
将值乘以1000并使用整数。
似乎必须使用浮动值。
祝你好运!