Ответ 1
если вы хотите иметь что-то вроде "1 000 000", вы можете изменить код на что-то вроде этого.
var num = $this.val().replace(/(\s)/g, '');
$this.val(num.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 "));
Надеюсь, что это поможет
Это делается неправильно: Может ли jQuery добавлять запятые, когда пользователь вводит цифры?
$('input.number').keypress(function(event){
if(event.which >= 37 && event.which <= 40){
event.preventDefault();
}
var $this = $(this);
var num = $this.val().replace(/,/g, '');
$this.val(num.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"));
});
Мне нужно "1000000", чтобы быть "1 000 000" или лучше с пробелами "1 000 000".
Пожалуйста, помогите. Спасибо.
если вы хотите иметь что-то вроде "1 000 000", вы можете изменить код на что-то вроде этого.
var num = $this.val().replace(/(\s)/g, '');
$this.val(num.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1 "));
Надеюсь, что это поможет
$(document).ready(function(){
$('input.number').keyup(function(event){
// skip for arrow keys
if(event.which >= 37 && event.which <= 40){
event.preventDefault();
}
var $this = $(this);
var num = $this.val().replace(/,/gi, "").split("").reverse().join("");
var num2 = RemoveRougeChar(num.replace(/(.{3})/g,"$1,").split("").reverse().join(""));
// the following line has been simplified. Revision history contains original.
$this.val(num2);});});
function RemoveRougeChar(convertString){
if(convertString.substring(0,1) == ","){
return convertString.substring(1, convertString.length)
}
return convertString;
}
Редактируйте, как вы считаете нужным - также в jsfiddle - jsFiddle
Вы можете использовать Digital Bush Masked Input Plugin для JQuery. В нем есть много вариантов настройки, включая пробелы, например:
$("#myInputText").mask("9 999 999",{placeholder:" "})
Кажется, что он был протестирован на разных платформах браузера, поэтому он может спасти вас от некоторых тестов совместимости.
Если вам нужна более полная поддержка числовой маски, вы можете использовать отличный autoNumeric с сайта decorplanit.com. Их веб-страница полна примеров.
Я пробовал autoNumeric, как подсказал ответ @Zero-Distraction, но у меня были некоторые проблемы с вырезанием/вставкой в него. Библиотека CleaveJS имеет гораздо большую популярность, немного больше встроенной функциональности, и у меня не было таких проблем с ней. (демонстрационный сайт по адресу https://nosir.github.io/cleave.js/)
Я попытался улучшить код j0k вместо использования размытия и фокуса, а не keyup: http://jsfiddle.net/AqDda/
^ Попробуйте ввести A (стандартный тип = "число" ) по сравнению с входом B (type = "text" с JavaScript и некоторым "недействительным" стилем).
$('input.number').on("focus",function(e){
var $this = $(this);
var num = $this.val().replace(/,/g,"");
$this.val(num);
}).on("blur", function(e){
var $this = $(this);
var num = $this.val().replace(/[^0-9]+/g, '').replace(/,/gi, "").split("").reverse().join("");
var num2 = RemoveRougeChar(num.replace(/(.{3})/g,"$1,").split("").reverse().join(""));
$this.val(num2);
});