Javascriptでクレジットカードの入力をフォーマットする際には
formatter.jsが便利です。
使い方は簡単で以下のように使います。
new Formatter(document.getElementById('credit-input'), { 'pattern': '{{9999}} {{9999}} {{9999}} {{9999}}' });
<input class="text" id="credit-input" name="card_number" placeholder="1234 5678 0912 3456" type="text" maxlength="19" pattern="[0-9]*" size="19">
http://firstopinion.github.io/formatter.js/