У меня этот код в jsfiddle, этот код должен проверять на недопустимые числовые значения, такие как -12-12. Таким образом, ошибка возникает, если я набираю недопустимое числовое значение (например, -12-11), оно удаляет вход (который является ожидаемым поведением), а странная часть - во второй раз, когда он не вызывает функцию document.on change ,jQuery мобильная функция on.change работает только иногда
Шаги по воспроизведению проблемы заключаются в следующем:
Тип 12, например.
Нажмите где-нибудь еще, как и другие текстовое поле и это число будет
преобразуется в десятичную (12,00)- Тип и неправильный номер, как -12-12 и нажмите где-нибудь еще и текстовое поле будет списываться из (что является ожидаемым поведением).
Во второй раз, когда вы вводите это число в текстовое поле, оно не меняет значение или очищает текстовое поле.
Это то, что я не понимаю, пытаясь отлаживать код во второй раз, когда вы вставляете неправильный номер, функция не вызвана, поэтому мне было интересно, почему.
Любая помощь приветствуется.
Мой Javascript код:
$(document).on('change', 'input[type="number"]', function(event) {
var target = $(event.target);
var max = target.attr('max') - 0;
var min = target.attr('min') - 0;
var step = target.attr('step');
var val = parseFloat(target.val());
if(typeof max !== 'undefined' && val > max) {
target.val(max);
}
else if(typeof min !== 'undefined' && val < min) {
target.val(min);
}
else if(typeof step !== 'undefined') {
if(step < 1) {
target.val(parseFloat(target.val()).toFixed(step.split('.')[1].length));
}
else {
debugger;
}
}
else if(val + '' != target.val()) {
target.val(val);
}
});
Он отлично работает в отношении вашего ожидаемого поведения. 12 изменяется на 12.00, -12 изменяется на 0.01 и -12-12. – 11thdimension
Не работает во второй раз, когда вы вводите этот номер: -12-12 – VaTo
Я получил его, похоже, это проблема с поддержкой браузера. Это происходит каждый раз, когда текстовое поле заполняется после его очистки. См. Эту ссылку http://stackoverflow.com/questions/16111491/putting-text-in-a-number-input-doesnt-trigger-change-event, есть некоторые обходные пути. Однако я бы предложил не использовать ввод типа номера, поскольку он нестабилен. – 11thdimension