2017-02-09 4 views
0

Это мой JQuery код:как удалить пустое пространство в поле ввода с зафиксировав длину

$("body #fuid, #muid").on('keypress change', function() 
     { 
      $(this).val(function (index, value) 
       { 
        return value.replace(/\W/gi, '').replace(/(.{4})/g, '$1 '); 
       }); 
     }); 

У меня есть HTML код, как это:

<div class="form-group col-md-4"> 
    <label for="father_uid">Father's Aadhar Number (Optional)</label> 
    <input type="text" minlength="14" maxlength="14" onkeypress="return IsNumeric(event);" class="form-control" id="fuid" name="father_uid" placeholder="Enter Father's Aadhar Number"> 
</div> 

код JQuery работает нормально но, как видим, я добавил атрибут maxlength = 14, т. е. он не должен принимать символы после 14 длин, но в соответствии с моим кодом jquery, как только я вхожу в 14-й символ, он дает пространство в конце, разбивая максимальное количество длин, Я не могу добавить персонажей в конце, так как он не принимает его.

Любой помогает оценили

Current Output: 1234 6789 6788 (With a blank space additionally added at end) 
Desired Output: 1234 6789 6788(With no blank space additionally added at end) 

ответ

0

Вы можете просто обрезать его, прежде чем вернуться. Это приведет к удалению последнего символа, если оно больше 14 символов, и ничего не делать, если это не так. Вы, возможно, потребуется изменить количество некоторых, если есть больше или меньше символов в значении, прежде чем форматировать его:

var substringLength = 14; 
if (value.length < 14){ 
    substringLength = value.length; 
} 
return value.replace(/\W/gi, '').replace(/(.{4})/g, '$1 ').substring(0, substringLength); 
+0

ваш код работает отлично только одна вещь, что происходит, что после того, как достигнут предел до 14 теперь обрезает, но если я печатаю любое другое число последнего номера заменяется Ex: 1234 5678 1234 теперь он достиг максимального предела, и поле имеет последнее число 4 сейчас, если я нажимаю 5, а затем 4 заменяется на 5, как исправить это событие, а также когда фокус находится вдали от поля, он удаляет последнее число, то есть делает 12-значное число равным 11 –

+0

Я на самом деле не на моей машине dev, но я думаю, что это может быть результатом вашего регулярного выражения? Возможно, вы могли бы написать скрипку с вашим полем и кодом, чтобы мы могли потрогать ее? – Forklift

0

Я изменил вам код немного, проблема была из-за .replace, где вы заменяете с $1

var foo = $(this).val().split(" ").join(""); 
    if (foo.length > 0) { 
    foo = foo.match(new RegExp('.{1,4}', 'g')).join(" "); 
    } 
    $(this).val(foo); 

Демо: https://jsfiddle.net/avhsz7ec/

Смежные вопросы