javascript - JS - 检测用户何时清除字段

标签 javascript jquery calculator

我正在为我当前的 Web 项目创建一个计算器,它运行良好,但在我使用它时,我注意到清除第三个字段导致脚本输出 NaN。

我是 Javascript 的新手,我尝试这样做

 if($('#field11').val() == '' || $('#field12').val() == '' || $('#field13').val() == ''){
     $('#result1').text('')
 }

但这并不能解决问题。我一直在寻找解决这个问题的方法,但好像互联网上没有人遇到过这样的问题!如果清除了任何一个输入,我需要能够清除输出 (#result1)。

这是我的完整代码:

 $(document).ready(function(){

     $('#field11').keyup(function(){
         if($('#field12').val() != '' && $('#field13').val() != ''){
        $('#result1').text(commafy(Math.round( $('#field11').val() + $('#field12').val() / $('#field13').val() * 1.5)) + ",99");
        }
     });
        $('#field12').keyup(function(){
        if($('#field11').val() != '' && $('#field13').val() != ''){
        $('#result1').text(commafy(Math.round( $('#field11').val() + $('#field12').val() / $('#field13').val() * 1.5)) + ",99");
        }
     }); 
     $('#field13').keyup(function(){
         if($('#field11').val() != '' && $('#field12').val() != ''){
        $('#result1').text(commafy(Math.round( $('#field11').val() + $('#field12').val() / $('#field13').val() * 1.5)) + ",99");
         }
     });
     if($('#field11').val() == '' || $('#field12').val() == '' || $('#field13').val() == ''){
         $('#result1').text('')
     }
});

这是 JSFiddle 上的工作代码:https://jsfiddle.net/x7a91bnx/

谢谢!

最佳答案

您可以使用 DRY 原则来改进您的逻辑。由于所有 keyup 处理程序都执行相同的逻辑,您可以将其提取到它自己的函数中。然后在该函数中,您可以检索每个字段的值,如果为空,则将其设置为 0。您还可以在进行计算之前检查 #field13 是否有值,以避免被零除的问题。另请注意,commafy() 函数也可以简化。

试试这个:

$(document).ready(function () {
    $('#field11, #field12, #field13').keyup(calculate);
});

function commafy(num) {
    return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ".");
}

function calculate() {
    var field11 = parseFloat($('#field11').val()) || 0;
    var field12 = parseFloat($('#field12').val()) || 0;
    var field13 = parseFloat($('#field13').val()) || 0;
    var result = field13 == 0 ? 0 : commafy(Math.round(field11 + field12 / field13 * 1.5)) + ",99";
    $('#result1').text(result);
}

Updated fiddle

关于javascript - JS - 检测用户何时清除字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31471575/

相关文章:

javascript - 函数对象如何符合 JavaScript 中对象的定义?

javascript - Fineuploader 未设置 x-amz-credentials

javascript - 防止表单提交后重新加载模式

javascript - Github API 使用 ajax 获取链接头

java - 如何在java swing计算器中获得百分比结果

Python 计算器/定义

c++ - 用户在 C++ 中输入 3x3 矩阵

javascript - Paypal 布伦特里订阅付款

javascript - Jquery - 具有多个类元素的 mousedown 函数

jquery - FancyBox 2.1.4/jQuery - 我可以使用一个缩略图链接到照片库吗?