2016-05-25 2 views
0

Я использую текстовое поле для сбора чисел, разделенных запятой. Никакие другие символы, даже пробелы, не допускаются. Только 0-9 и запятая.Предотвращение дублирования запятой от ввода текстового поля ввода

Следующая функция служит для моей цели, но теперь я хочу предотвратить дублирование запятой.

Исправить например. 22 444,2 444

Неверный , например. 22,, 444,2,444 ИЛИ 22, 444, 2, 444

Вот код, я использую для ограничения поля с номерами, и позволяя только запятой:

$(document).ready(function(){ 
$("#customPrices").keypress(function (e) { 


if (e.which != 8 && e.which != 0 && String.fromCharCode(e.which) != ',' && (e.which < 48 || e.which > 57)) 
{ 

//display error message 
if($("#errmsg").is(':hidden')) 
{ 
$("#errmsg").fadeIn(); 
} 
return false; 

} 

}); 
}); 

I «ве нашли что-то, что может быть в состоянии работать по следующей ссылке: Javascript Help - prevent duplicate characters in textbox

пример существует необходимость предотвращения дефис, который charCode 45. запятая charCode 44 ....

Но я «Не знаю, как реализовать его в моем текущем коде ...

Любая помощь действительно понравится, спасибо!

ответ

1

В вашем положении я бы не стал проверять нажатие клавиши, а проверить содержимое текстового поля при изменении пользователем.

Это может быть, например, достигается с помощью регулярного выражения:

function validate() { 
 
    var input = document.getElementById('inputField').value; 
 

 
    if(input.match(/,{2,}/g)) { 
 
    // the user entered a duplicate comma 
 
    alert('No duplicate commas allowed!'); 
 
    } 
 
}
<input oninput='validate()' id='inputField' />


Вы также можете расширить регулярное выражение для проверки ввода для целей, отличных от цифр 0 символов до 9 и запятых:

/(,{2,}|[^,0-9])/g 

Будет также сообщено, например, 22,44,d,17 как недействительный.

+0

Сначала я пробовал это, но, хотя он обнаруживал дублируемую запятую и бросал предупреждение, он все равно позволял вводить запятую в любом случае. Я согласился на ответ сарата, но большое спасибо за ваш ответ! Если есть какой-либо способ использовать ваш и запретить ввод запятой, мне бы очень хотелось узнать. – StuyvesantBlue

+0

Мне пришлось в конечном итоге использовать ваш ответ, потому что предыдущий не согласился со всеми браузерами. – StuyvesantBlue

1
add the below condition: 
1) take the existing value 
2) check the last char is (,) and current char also (,) and validate 
var customPrices = $("#customPrices").val(); 

String.fromCharCode(e.which) == ',' && String.fromCharCode(e.which) == 
customPrices.charAt(customPrices.length-1) 

or 
String.fromCharCode(e.which) == ',' && customPrices.charAt(customPrices.length-1) == ',' 
+0

Спасибо большое, я использовал второй, и он отлично работал! – StuyvesantBlue

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