假设我有一个文件,我将事件绑定到一些输入,用于解析和格式化日期与moment.js,例如:
// plugins.js
$('.date').on('focusout', function() {
var thisInput = $(this);
thisInput.val( moment(thisInput.val()).format('YYYY-MM-DD') );
});
在我的html文件中,我在plugins.js
调用之后有一个脚本,在这个脚本中我使用解析日期来计算日期的年龄,假设该函数已在plugins.js
中执行:
<form>
<div class="form-group">
<label for="birth-date-input">Birth date</label>
<input type="text" id="birth-date-input" class="date">
</div>
<div class="form-group">
<label for="age">Age</label>
<input type="text" id="age">
</div>
</form>
<script src="plugins.js"></script>
<script>
jQuery(document).ready(function($) {
$('#birth-date-input').on('focusout', function() {
var thisInputVal = $(this).val();
var birthDate = moment(thisInputVal, 'YYYY-MM-DD');
var age = moment().diff(birthDate, 'years');
$('#age').val( age );
});
});
</script>
在我理想的单词中,第二个脚本的.val()
将在第一个解析日期中分配。但事实是,在这两种情况下,价值是相同的,我做这项工作的唯一方法就是使用脏setTimeout()
。
$('#birth-date-input').on('focusout', function() {
setTimeout(function() {
var thisInputVal = $(this).val();
var birthDate = moment(thisInputVal, 'YYYY-MM-DD');
var age = moment().diff(birthDate, 'years');
$('#age').val( age );
}, 100);
});
有没有其他方法可以做到这一点?确保事件在另一个事件[没有setTimeout] ...
的动作之后执行答案 0 :(得分:0)
您可以在任何其他代码之前调用您想要在第二个函数内首先执行的函数。所以必须首先执行。
function a()
{
alert("first");
return true;
}
function b
{
b();
alert("second");
}
&#13;