JSFiddle - React, Tailwind, and code Playground
HTML
<input type="text" class="money-format">
JavaScript
(function ($) {
// узнать позицию курсора
$.fn.getCursorPosition = function () {
var input = this.get(0);
if (!input) return;
if ('selectionStart' in input) {
return input.selectionStart;
} else if (document.selection) {
input.focus();
var sel = document.selection.createRange();
var selLen = document.selection.createRange().text.length;
sel.moveStart('character', -input.value.length);
return sel.text.length - selLen;
}
}
// установить позицию курсора
$.fn.setCursorPosition = function (pos) {
if ($(this).get(0).setSelectionRange) {
$(this).get(0).setSelectionRange(pos, pos);
} else if ($(this).get(0).createTextRange) {
var range = $(this).get(0).createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
}
// удалить выделенный текст
$.fn.delSelected = function () {
var input = $(this);
var value = input.val();
var start = input[0].selectionStart;
var end = input[0].selectionEnd;
input.val(
value.substr(0, start) + value.substring(end, value.length)
);
return end - start;
};
$.fn.priceFormat = function () {
function priceFormatted(element) {
element = String(element).replace(/[^\d]/g, '');
if(!element) return '';
return (String(parseInt(element))).replace(/(\d)(?=(\d\d\d)+([^\d]|$))/g, '$1 ');
}
$(this)
// Отмена перетаскивания текста и вставки через контекстное меню
.bind('contextmenu', function (event) {
...