2014-10-02 19 views
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]的動作之後執行...

+0

你能詳細說明這個問題嗎?你爲什麼不合並這兩個事件? – Johan 2014-10-02 21:40:53

+0

你可以將它們組合成一個事件處理程序嗎?或者從另一個調用一個事件處理程序? – adam0101 2014-10-02 21:41:09

+0

你真的需要同一事件的第一個聽衆嗎?自定義事件和年齡設置時觸發它呢? – Cheery 2014-10-02 21:43:14

回答

0

您可以在任何其他代碼之前調用要在第二個函數內首先執行的函數。所以它必須首先執行。

function a() 
 
{ 
 

 
    alert("first"); 
 
return true; 
 
} 
 
function b 
 
{ 
 

 
    b(); 
 
    alert("second"); 
 
}
也可以設置在第一載體作用的執行的隱變量,並檢查它是否在第二個設置與否。

相關問題