Хорошо, я сделал ошибку и вслепую скопировал и наклеил "фрагмент кода", который должен был запретить пользователю вводить НИЧЕГО НЕВОЗМОЖНОГО, кроме числа, в поле ввода Bootstrap.
Вслепую это, я действительно не понимал, как он должен работать. Теперь мне нужно разрешить десятичную точку, "." быть напечатанным и я не знаю, что мне нужно изменить.
Может ли кто-нибудь объяснить фрагмент ниже или предоставить ресурс?
$('#elementXPosition,#elementYPosition,#elementWidth,#elementHeight').keypress(function(e) {
var a = [];
var k = e.which;
for (i = 48; i < 58; i++)
a.push(i);
if (!(a.indexOf(k)>=0))
e.preventDefault();
});
Вот решение, которое я могу создать для вас
Есть два возможных решения, и я бы предпочел использовать функцию pattern
HTML.
**HTML**
<input type="text" id="elementXPosition" pattern="[0-9.]+" title="Please enter decimal numbers only" placeholder="Using pattern" />
<input type="text" id="elementYPosition" placeholder="Using jQuery" />
**jQuery**
$(document).ready(function () {
$("#elementYPosition").keydown(function (e) {
/*To check if shift key was pressed*/
if (e.shiftKey == true) {
e.preventDefault();
}
/*Allows some keys to be pressed*/
if ((e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105) || e.keyCode == 8 || e.keyCode == 9 || e.keyCode == 37 || e.keyCode == 39 || e.keyCode == 46 || e.keyCode == 190) {} else {
e.preventDefault();
}
/*This will allow the '.' to be pressed only once*/
if ($(this).val().indexOf('.') !== -1 && e.keyCode == 190) e.preventDefault();
});
});
Также здесь приведен список кодов клавиш, которые могут потребоваться для редактирования кода в соответствии с вашим желанием.
Надеюсь, это поможет.
.(dot)
будет написано в текстовом поле, и повторяющийся вопрос, который вы предлагаете, отличается.