Это мой код, он не работает должным образом. Это может быть дублировано с "+++" или "---". Я могу предотвратить это, но это только увеличивает валидацию. Есть ли лучший способ? Можно ли оптимизировать код?
var regexNumber = /^\$?(((\d)\,?)+)?((\d)+)(\.(\d)+)?$/;
$("#" + element).keydown(function (event) {
// Allow only backspace, delete, dot, arrow key, tab, shift+tab
if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 190 || (event.keyCode>=37 && event.keyCode<=40) || event.keyCode==9 || event.keyCode==16) {
// let it happen, don't do anything
}
else {
// Allow copy, paste, select all only numbers
if (((event.keyCode == 65 || event.keyCode == 86 || event.keyCode == 67) && (event.ctrlKey === true || event.metaKey === true))) {
if (event.originalEvent.clipboardData.getData('Text').match(regexNumber) == null) {
event.preventDefault();
}
}
// Ensure that it is a number and stop the keypress
if (event.keyCode < 48 || event.keyCode > 57) {
event.preventDefault();
}
}
});
Он не должен позволять: 1. Буквы 2. Вставлять данные, имеющие буквы
Он должен позволять: 1. Цифры с запятой 2. Плавать 3. Вкладка , Shift + Tab 4. Ctrl + A, C, X, V 5. Backspace, Delete 6. Клавиши со стрелками 7. Вставка данных с запятой и плавающей точкой
Я думаю, что регулярное выражение для проверки букв и специальных символы кроме (. (точка) и, (запятая)) в строке и не разрешать их будет работать нормально? Но я не понимаю, каким должно быть регулярное выражение?
Я не имею большого представления о регулярном выражении.
Я искал похожие вопросы, в моей проверке они пропускали некоторые случаи.