2011-09-30 92 views
4

我已经通过了一些建议问题,阅读激发,但我不知道究竟如何实现它们:添加延迟之前的keyup()jQuery中

我有8个文本框,7个用于数字输入,8​​个是总数。 即7.5 + 7.5 + 7.5 + 7.5 + 7.5 + 0.0 + 0.0 = 37.5

我有jQuery的工作,以便它监视每个文本框的keyup()并添加所有的值并计算总和。

我决定要格式化7个文本框中的用户输入,以便在输入“1”或“.1”(即“1.0”或“0.1”)时显示为#。#。

问题是我需要在格式化输入之前添加一个延迟,我不确定我是如何使用javascript和/或jquery进行操作的。

<script type="text/javascript"> 

     $(function() { 

      var content = $('input[id*="txtMondayHours"]').val(); 
      $('input[id*="txtMondayHours"]').keyup(function() { 
       if ($('input[id*="txtMondayHours"]').val() != content) { 

        content = $('input[id*="txtMondayHours"]').val(); 
        $('input[id*="txtMondayHours"]').val((new Number($('input[id*="txtMondayHours"]').val())).toFixed(2)); 
        var hoursMon = new Number(content); 
        var hoursTue = new Number($('input[id*="txtTuesdayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 
       } 
      }); 

      var content2 = $('input[id*="txtTuesdayHours"]').val(); 
      $('input[id*="txtTuesdayHours"]').keyup(function() { 
       if ($('input[id*="txtTuesdayHours"]').val() != content2) { 

        content2 = $('input[id*="txtTuesdayHours"]').val(); 
        var hoursMon = new Number(content2); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 
       } 
      }); 

      var content3 = $('input[id*="txtWednesdayHours"]').val(); 
      $('input[id*="txtWednesdayHours"]').keyup(function() { 
       if ($('input[id*="txtWednesdayHours"]').val() != content3) { 

        content3 = $('input[id*="txtWednesdayHours"]').val(); 
        var hoursMon = new Number(content3); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtTuesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 
       } 
      }); 

      var content4 = $('input[id*="txtThursdayHours"]').val(); 
      $('input[id*="txtThursdayHours"]').keyup(function() { 
       if ($('input[id*="txtThursdayHours"]').val() != content4) { 

        content4 = $('input[id*="txtThursdayHours"]').val(); 
        var hoursMon = new Number(content4); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtTuesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 
       } 
      }); 

      var content5 = $('input[id*="txtFridayHours"]').val(); 
      $('input[id*="txtFridayHours"]').keyup(function() { 
       if ($('input[id*="txtFridayHours"]').val() != content5) { 

        content5 = $('input[id*="txtFridayHours"]').val(); 
        var hoursMon = new Number(content5); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtTuesdayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 
       } 
      }); 

      var content6 = $('input[id*="txtSaturdayHours"]').val(); 
      $('input[id*="txtSaturdayHours"]').keyup(function() { 
       if ($('input[id*="txtSaturdayHours"]').val() != content6) { 

        content6 = $('input[id*="txtSaturdayHours"]').val(); 
        var hoursMon = new Number(content6); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtTuesdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 
       } 
      }); 

      var content7 = $('input[id*="txtSundayHours"]').val(); 
      $('input[id*="txtSundayHours"]').keyup(function() { 
       if ($('input[id*="txtSundayHours"]').val() != content7) { 

        content7 = $('input[id*="txtSundayHours"]').val(); 
        var hoursMon = new Number(content7); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtTuesdayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 
       } 
      }); 

     }); 
    </script> 

理想情况下,我想解雇这一行:

$('input[id*="txtMondayHours"]').val((new Number($('input[id*="txtMondayHours"]').val())).toFixed(2)); 

指定的时间后,如100ms的


更新工作代码:


<script type="text/javascript"> 

     var delay = (function() { 
      var timer = 0; 
      return function (callback, ms) { 
       clearTimeout(timer); 
       timer = setTimeout(callback, ms); 
      }; 
     })(); 

     $(function() { 

      var content = $('input[id*="txtMondayHours"]').val(); 
      $('input[id*="txtMondayHours"]').keyup(function() { 
       if ($('input[id*="txtMondayHours"]').val() != content) { 

        content = $('input[id*="txtMondayHours"]').val(); 
        var hoursMon = new Number(content); 
        var hoursTue = new Number($('input[id*="txtTuesdayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 

        delay(function() { 
         $('input[id*="txtMondayHours"]').val((new Number($('input[id*="txtMondayHours"]').val())).toFixed(2)); 
        }, 750); 
       } 
      }); 

      var content2 = $('input[id*="txtTuesdayHours"]').val(); 
      $('input[id*="txtTuesdayHours"]').keyup(function() { 
       if ($('input[id*="txtTuesdayHours"]').val() != content2) { 

        content2 = $('input[id*="txtTuesdayHours"]').val(); 
        var hoursMon = new Number(content2); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 

        delay(function() { 
         $('input[id*="txtTuesdayHours"]').val((new Number($('input[id*="txtTuesdayHours"]').val())).toFixed(2)); 
        }, 750); 
       } 
      }); 

      var content3 = $('input[id*="txtWednesdayHours"]').val(); 
      $('input[id*="txtWednesdayHours"]').keyup(function() { 
       if ($('input[id*="txtWednesdayHours"]').val() != content3) { 

        content3 = $('input[id*="txtWednesdayHours"]').val(); 
        var hoursMon = new Number(content3); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtTuesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 

        delay(function() { 
         $('input[id*="txtWednesdayHours"]').val((new Number($('input[id*="txtWednesdayHours"]').val())).toFixed(2)); 
        }, 750); 
       } 
      }); 

      var content4 = $('input[id*="txtThursdayHours"]').val(); 
      $('input[id*="txtThursdayHours"]').keyup(function() { 
       if ($('input[id*="txtThursdayHours"]').val() != content4) { 

        content4 = $('input[id*="txtThursdayHours"]').val(); 
        var hoursMon = new Number(content4); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtTuesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 

        delay(function() { 
         $('input[id*="txtThursdayHours"]').val((new Number($('input[id*="txtThursdayHours"]').val())).toFixed(2)); 
        }, 750); 
       } 
      }); 

      var content5 = $('input[id*="txtFridayHours"]').val(); 
      $('input[id*="txtFridayHours"]').keyup(function() { 
       if ($('input[id*="txtFridayHours"]').val() != content5) { 

        content5 = $('input[id*="txtFridayHours"]').val(); 
        var hoursMon = new Number(content5); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtTuesdayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 

        delay(function() { 
         $('input[id*="txtFridayHours"]').val((new Number($('input[id*="txtFridayHours"]').val())).toFixed(2)); 
        }, 750); 
       } 
      }); 

      var content6 = $('input[id*="txtSaturdayHours"]').val(); 
      $('input[id*="txtSaturdayHours"]').keyup(function() { 
       if ($('input[id*="txtSaturdayHours"]').val() != content6) { 

        content6 = $('input[id*="txtSaturdayHours"]').val(); 
        var hoursMon = new Number(content6); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtTuesdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtSundayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 

        delay(function() { 
         $('input[id*="txtSaturdayHours"]').val((new Number($('input[id*="txtSaturdayHours"]').val())).toFixed(2)); 
        }, 750); 
       } 
      }); 

      var content7 = $('input[id*="txtSundayHours"]').val(); 
      $('input[id*="txtSundayHours"]').keyup(function() { 
       if ($('input[id*="txtSundayHours"]').val() != content7) { 

        content7 = $('input[id*="txtSundayHours"]').val(); 
        var hoursMon = new Number(content7); 
        var hoursTue = new Number($('input[id*="txtMondayHours"]').val()); 
        var hoursWed = new Number($('input[id*="txtWednesdayHours"]').val()); 
        var hoursThu = new Number($('input[id*="txtThursdayHours"]').val()); 
        var hoursFri = new Number($('input[id*="txtFridayHours"]').val()); 
        var hoursSat = new Number($('input[id*="txtSaturdayHours"]').val()); 
        var hoursSun = new Number($('input[id*="txtTuesdayHours"]').val()); 

        $('input[id*="txtTotalWorkingHours"]').val(parseFloat(hoursMon.toFixed(2)) + parseFloat(hoursTue.toFixed(2)) + parseFloat(hoursWed.toFixed(2)) + parseFloat(hoursThu.toFixed(2)) + parseFloat(hoursFri.toFixed(2)) + parseFloat(hoursSat.toFixed(2)) + parseFloat(hoursSun.toFixed(2))); 

        delay(function() { 
         $('input[id*="txtSundayHours"]').val((new Number($('input[id*="txtSundayHours"]').val())).toFixed(2)); 
        }, 750); 
       } 
      }); 

     }); 
    </script> 
+0

在一个完全不相关的说明。我会建议干掉你的代码。你做了7次完全相同的事情,在这个过程中,你做了7次每件事。 – bstakes

回答