Javascript 关于重构jQuery时长计算的建议
一般来说,我对jQuery和javascript比较陌生;我有足够的知识来编写基本的脚本,但我可以通过一些帮助来优化我的一些代码,这些代码对我来说似乎并不高效,但我不知道修改它的最佳方法 我有两个输入type='time'表单字段和一个隐藏表单字段,用于保存两个字段之间的差异 这是我的密码:Javascript 关于重构jQuery时长计算的建议,javascript,jquery,refactoring,Javascript,Jquery,Refactoring,一般来说,我对jQuery和javascript比较陌生;我有足够的知识来编写基本的脚本,但我可以通过一些帮助来优化我的一些代码,这些代码对我来说似乎并不高效,但我不知道修改它的最佳方法 我有两个输入type='time'表单字段和一个隐藏表单字段,用于保存两个字段之间的差异 这是我的密码: function timeDifference(field1, field2) { var field1val = $(field1).val(); var field2val = $(fi
function timeDifference(field1, field2) {
var field1val = $(field1).val();
var field2val = $(field2).val();
if ((field1val !== '--:--') && (field2val !== '--:--')) {
var hours = field1val.split(':')[0] - field2val.split(':')[0];
var minutes = field1val.split(':')[1] - field2val.split(':')[1];
minutes = minutes.toString().length<2?'0'+minutes:minutes;
if(minutes<0){
hours--;
minutes = 60 + minutes;
}
hours = hours.toString().length<2?'0'+hours:hours;
var difference = hours + ':' + minutes;
return difference;
} else return false;
};
$('#assessmentHeaderStartTime, #assessmentHeaderEndTime').change(function() {
var duration = timeDifference('#assessmentHeaderStartTime','#assessmentHeaderEndTime');
$('#assessmentHeaderDuration').val(duration);
});
功能时差(字段1、字段2){
var field1val=$(field1.val();
var field2val=$(field2.val();
如果((field1val!='--:')&&&(field2val!='--:'){
var hours=field1val.split(“:”)[0]-field2val.split(“:”)[0];
var minutes=field1val.split(“:”)[1]-field2val.split(“:”)[1];
分钟=minutes.toString().length您确定如果单击向上箭头,会调用change
事件吗?根据我运行的快速测试,不会调用
如果更改事件触发太多,我打算建议使用onBlur
,但看起来您拥有的代码将完全按照您的意愿运行。有关onBlur
和onChange之间区别的更多详细信息,请参阅问题。是的,我确信它会在向上箭头上触发change。所有3个字段都位于同一pa上ge和您可以看到持续时间字段的更新,您可以单击箭头更改其他两个时间字段。感谢您的链接,但正如您所说,我现在得到的代码似乎最适合我希望它的行为。