我有以下代码
$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 ) );
}
}
});
});
运行良好。但令我不安的是重复的部分。请注意 focusout
和keyup
有相同的代码。我可以在不使用 function() 的情况下简化它吗?
- 我尝试过类似
keyup, focusout: function(){
的方法,但它不起作用。 - 如何/在哪里可以写
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/