javascript - 简化代码

标签 javascript jquery

我有以下代码

$j(document).ready(function(){
    $j('#uang').on({
        focus: function(){
            var ini = $j( this );
            var theVal = accounting.unformat( ini.val() , ',' );
            var data = ( theVal == 0 ? '' : theVal);

            ini.val( data ).select();
        },
        focusout: function(){
            var ini = $j( this );
            var kembalian = $j('#kembalian');

            var val = accounting.unformat( ini.val() , ',' );
            var cicilan_val = $j('#cicilan');
            var cicilan = accounting.unformat( cicilan_val.val() , ',');
            if( val > 0 ){
                var nilai_kembalian = val - cicilan;
                kembalian.val( accounting.formatNumber( nilai_kembalian ) );
            }
        },
        keyup: function(){
            var ini = $j( this );
            var kembalian = $j('#kembalian');

            var val = accounting.unformat( ini.val() , ',' );
            var cicilan_val = $j('#cicilan');
            var cicilan = accounting.unformat( cicilan_val.val() , ',');

            if( val > 0 ){
                var nilai_kembalian = val - cicilan;
                kembalian.val( accounting.formatNumber( nilai_kembalian ) );
            }
        }
    });
});

运行良好。但令我不安的是重复的部分。请注意 focusoutkeyup有相同的代码。我可以在不使用 function() 的情况下简化它吗?

  1. 我尝试过类似 keyup, focusout: function(){ 的方法,但它不起作用。
  2. 如何/在哪里可以写var ini = $j( this );一次,但我可以在任何方法(操作?)中访问它,即内部焦点、焦点输出等。

谢谢。

最佳答案

如果您不愿意使用 function() 那么这可能是一个选项 -

$j(document).ready(function(){
    $j('#uang').on('focus', function(){
            var ini = $j( this );
            var theVal = accounting.unformat( ini.val() , ',' );
            var data = ( theVal == 0 ? '' : theVal);

            ini.val( data ).select();
      }).on('focusout keyup', function(){
            var ini = $j( this );
            var kembalian = $j('#kembalian');

            var val = accounting.unformat( ini.val() , ',' );
            var cicilan_val = $j('#cicilan');
            var cicilan = accounting.unformat( cicilan_val.val() , ',');
            if( val > 0 ){
                var nilai_kembalian = val - cicilan;
                kembalian.val( accounting.formatNumber( nilai_kembalian ) );
            }
    });
});

关于javascript - 简化代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23490187/

相关文章:

javascript - JQuery "#id.class"选择器混搭

javascript - 从点 Three.js 生成网格

javascript - document.title 和字符串中的空格

javascript - 如何在 Javascript 中根据变量设置属性值

jQuery 选择第二次设置错误的值

javascript - 如何从异步调用返回响应?

javascript - AngularJS ng-if 具有固定元素位置

javascript - 尝试使用 JQuery 选择其他元素中的链接

javascript - 使用一个 jQuery AJAX 表单(或响应)返回两个数据库结果

jQuery:点击时仅显示当前div