Событие jQuery, всплывающее с фокусом в фокусе Размытие фокуса повторяется без прерывания
Приведенный ниже файл просто включен в php-файл для самостоятельной работы.
ТЕКУЩИЙ ВЫХОД: Когда я делаю действие из focusout
в focusin
значение меняется. Я не хочу, чтобы это случилось. ОЖИДАЕМЫЙ ВЫХОД: Я хочу, чтобы значения автоматически изменялись только тогда, когда они превышают минимальные или максимальные значения.
Пытается так далеко:
- я использовал
event.preventdefault()
после того, как мои необходимые действия сделаны. - Я использовал последовательный
focusin
focusout
focus
а такжеblur
, - Я положил еще один внутри
changedOnkeyAction();
вызов функцииfocusOver
функция. - Пробовал с
return
но не поможет
JSFIDDLE: https://jsfiddle.net/vnh4Ljxz/11/
ИСПОЛЬЗУЙТЕ УГЛОВЫЕ ЛИСТЫ ДЛЯ НИЖЕ, ЧТОБЫ ЗАКРЫТЬ HTML-ТЕГИ ДЛЯ ВХОДНОГО ПОЛЯ
input id = "frmRandomDownloadDelay" class="textWidget ui-spinner-input пользовательская кнопка ui-виджет ui-состояние-состояние по умолчанию ui-corner-all" value="30" valuemin="0" valuemax="60" valuenow="60" autocomplete="off" role="button" disabled="false" style="width: 44px;" тип = "текст"
function ValidateNum(spinnerId, currentValue) {
this.rotate = {
'rotId': rotId,
'currentValue': currentValue
};
this.beyondMinLimit = function(){
var minValue = $(this.rotate.rotId).attr("aria-valuemin");
return this.rotate.currentValue < minValue;
};
this.beyondMaxLimit = function(){
var maxValue = $(this.rotate.rotId).attr("aria-valuemax");
return this.rotate.currentValue > maxValue;
};
this.emptyValue = function(){
return $(this.rotate.rotId).val() == "";
};
this.isNumeric = function(){
var valid = /^\d{0,4}(\.\d{0,2})?$/.test(this.rotate.currentValue);
alert("is number - " + valid);
return valid;
};
}
function setToDefault(rotId, restoreValue){
$( rotId ).val( restoreValue );
$( ".ui-spinner-input" ).off();
}
function focusDone(promptOf){
$( ".ui-spinner-input" ).focusin(function() {
var rotId = "#"+$(this).attr("id");
var restoreValue = "";
switch(promptOf){
case "lesser" || "empty" || "notNumeric":
restoreValue = $(rotId).attr("valuemin");
setToDefault(rotId, restoreValue);
break;
case "greaterThanMax":
restoreValue = $(rotId).attr("valuemax");
setToDefault(rotId, restoreValue);
break;
}
});
}
function changedOnkeyAction(){
$(document).on('keyup', ".ui-spinner-input", function(){
var rotId = "#"+$(this).attr("id");
var currentValue = $(rotId).val();
var currentSpin = new ValidateNum(rotId, currentValue);
var lesser = nowSpun.beyondMinLimit();
var greaterThanMax = nowSpun.beyondMaxLimit();
var empty = nowSpun.emptyValue();
var isNumber = nowSpun.isNumeric();
if(lesser){
alert("minimum.");
focusDone("lesser");
}
if(greaterThanMax){
alert("maximum.");
focusDone("greaterThanMax");
}
if(empty){
focusDone("empty");
}
if(!isNumber){
focusDone("notNumeric");
}
});
}
keyAction();