这是我运行时无效的代码。请告诉我遗失的地方或我出错的地方。
$(':input').bind('keypress keydown keyup change', function() {
var acho = parseFloat($(':input[name="acho"]').val(),10),
alto = parseFloat($(':input[name="alto"]').val(),10),
matl = parseFloat($(':input[name="material"]').val(),10);
cat = parseFloat($(':input[name="category"]').val(),10);
var v = '';
if (!isNaN(acho) && !isNaN(alto) && !isNaN(matl)){
v = cat*(matl / 100) / ((alto / 100) * (acho / 100));
}
$(':input[name="ml"]').val(v.toString());
});
答案 0 :(得分:2)
您的变量定义存在问题:
matl = parseFloat($(':input[name="material"]').val(),10);
此行后面应该有一个逗号,后续变量赋值的b / c。而且我会把v
扔进去做好。
var acho = parseFloat($(':input[name="acho"]').val()),
alto = parseFloat($(':input[name="alto"]').val()),
matl = parseFloat($(':input[name="material"]').val()),
cat = parseFloat($(':input[name="category"]').val()),
v = '';
(还从parseFloat
删除了无效的基数参数)
更正后的代码:
$(':input').bind('keypress keydown keyup change', function() {
var acho = parseFloat($(':input[name="acho"]').val()),
alto = parseFloat($(':input[name="alto"]').val()),
matl = parseFloat($(':input[name="material"]').val()),
cat = parseFloat($(':input[name="category"]').val()),
v = '';
if ( !isNaN(acho) && !isNaN(alto) && !isNaN(matl) ){
v = cat*(matl / 100) / ((alto / 100) * (acho / 100));
}
$(':input[name="ml"]').val( v.toString() );
});
答案 1 :(得分:0)
您的代码主要是有效:
document.ready
处理程序10
中移除parseFloat
基数参数 - 不支持keyXXX
函数上注册 - 其中一些函数在按下的键被添加到输入值之前被调用input
事件(和change
)代替cat
测试isNaN
[啊,这是一个下拉列表 - 没关系] var
都已正确声明我的工作版本经过最少的修改,位于http://jsfiddle.net/alnitak/6hNQ2/,已清理版本:
$(':input').bind('input change', function() {
// don't repeat yourself - also strips whitespace
function val(f) {
var $el = $(':input[name="' + f + '"]');
return parseFloat($.trim($el.val()));
}
var acho = val('acho'),
alto = val('alto'),
matl = val('material'),
cat = val('category');
if (isNaN(acho) || isNaN(alto) || isNaN(matl)) {
return;
}
var v = cat * (matl / 100) / ((alto / 100) * (acho / 100));
$(':input[name="ml"]').val(v);
});