0
中的動作後執行比方說,我已經在我的事件綁定到一些輸入的文件,解析和格式日期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]的動作之後執行...
你能詳細說明這個問題嗎?你爲什麼不合並這兩個事件? – Johan 2014-10-02 21:40:53
你可以將它們組合成一個事件處理程序嗎?或者從另一個調用一個事件處理程序? – adam0101 2014-10-02 21:41:09
你真的需要同一事件的第一個聽衆嗎?自定義事件和年齡設置時觸發它呢? – Cheery 2014-10-02 21:43:14