├── autotypograf.vanilla.js ├── README.md ├── jquery.autotypograf.js ├── LICENSE └── example.html /autotypograf.vanilla.js: -------------------------------------------------------------------------------- 1 | function autotypograf(elem, prefs) { 2 | prefs = prefs || {}; 3 | prefs.live = true; 4 | 5 | var lastVal = $elem.val(), 6 | typograf = new Typograf(prefs); 7 | 8 | elem.addEventListener('input', function(e) { 9 | var val = $elem.val(); 10 | if(val !== lastVal) { 11 | var pos = getCaretPosition(elem); 12 | lastVal = typograf.execute(val); 13 | elem.value = lastVal; 14 | setCaretPosition(elem, pos === val.length ? lastVal.length : pos); 15 | } 16 | 17 | elem.value = typograf.execute(lastVal); 18 | }, false); 19 | 20 | function getCaretPosition(elem) { 21 | return elem.selectionStart || 0; 22 | } 23 | 24 | function setCaretPosition(elem, pos) { 25 | elem.setSelectionRange && elem.setSelectionRange(pos, pos); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Типографирование на лету 2 | === 3 | 4 | Позволяет типографировать текст при вводе в текстовое поле. 5 | 6 | ## Использование с jQuery 7 | ```html 8 | 9 | 10 | ... 11 | 12 | 15 | ``` 16 | 17 | ## Использование без jQuery 18 | ```html 19 | 20 | 21 | ... 22 | 23 | 26 | ``` 27 | 28 | ## [Пример](https://typograf.github.io/jquery-typograf/example.html) 29 | 30 | ## [Лицензия](./LICENSE) 31 | MIT License 32 | -------------------------------------------------------------------------------- /jquery.autotypograf.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 3 | $.fn.autotypograf = function(prefs) { 4 | prefs = prefs || {}; 5 | prefs.live = true; 6 | 7 | var typograf = new Typograf(prefs); 8 | 9 | $.each(this, function() { 10 | var $elem = $(this), 11 | lastVal = $elem.val(); 12 | 13 | $elem 14 | .on('input', function(e) { 15 | var val = $elem.val(); 16 | if(val !== lastVal) { 17 | var pos = getCaretPosition(this); 18 | lastVal = typograf.execute(val); 19 | $elem.val(lastVal); 20 | setCaretPosition(this, pos === val.length ? lastVal.length : pos); 21 | } 22 | }) 23 | .val(typograf.execute(lastVal)); 24 | }); 25 | 26 | function getCaretPosition(elem) { 27 | return elem.selectionStart || 0; 28 | } 29 | 30 | function setCaretPosition(elem, pos) { 31 | elem.setSelectionRange && elem.setSelectionRange(pos, pos); 32 | } 33 | }; 34 | 35 | })(jQuery); 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | ## Лицензия 2 | The MIT License (MIT) 3 | 4 | © 2015 Денис Селезнев, 5 | 6 | Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий: 7 | 8 | Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения. 9 | 10 | ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ. 11 | -------------------------------------------------------------------------------- /example.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Пример использования jquery.autotypograf.js 9 | 59 | 60 | 61 |
62 |

Типографика на лету

63 |
64 |
65 |
66 |
67 |
68 |
69 |
Вводимый текст:
70 |
71 |
72 |
73 |
74 |
75 |
Подсветка неразрывных пробелов:
76 |
77 |
78 |
79 |
80 | 136 | 137 | 138 | --------------------------------------------------------------------------------