JS에서 날짜를 확인하고 날짜를 사용자 입력과 비교하는 함수를 만들었습니다.변경시 이벤트를 한 번만 표시하는 방법은 무엇입니까?
사용자가 입력 필드를 변경할 때 함수가 실행됩니다. 그러나 입력 필드를 변경할 때 날짜가 올바르지 않으면 오류 메시지가 두 번 또는 여러 번 유지되는 문제가 발생합니다. 왜냐하면 함수 계산은 각 변경에서 실행되기 때문입니다.
변경 사항에 오류 메시지가 표시되면 첫 번째 오류 메시지를 비활성화하고 날짜가 맞으면 오류 메시지를 제거한다고 어떻게 말 할 수 있습니까?
function calculate(){
if (thereIsMissingValue())
return
let formDate = getFormDate()
let comparisonDate = getComparisonDate()
let formNewDate = getNewDate()
let isOlderThanComparison = formDate < comparisonDate
let isNewerThanToday = formDate > formNewDate
if(isOlderThanComparison) {
$('#next-button').prop('disabled', true);
var $newdiv1 = $("<div id='error-form' class='error-form'><p>Error text</p></div>");
$(".gform_page_fields").prepend($newdiv1);
}else if(isNewerThanToday) {
$('#next-button').prop('disabled', true);
var $newdiv2 = $("<div id='error-form' class='error-form'><p>Error text 2</p></div>");
$(".gform_page_fields").prepend($newdiv2);
}else {
$('#next-button').prop('disabled', false);
$("#error-form").remove();
}
}
$('#day, #month, #year, #hour, #minute').change(function(){
calculate();
});
는
$('#day, #month, #year, #hour, #minute').one("change",function(){
calculate();
});
을 시도하지만 함수는
당신은 흐림 이벤트를 (요소가 포커스를 잃었을 때 발생)를 사용하여 시도하고 당신의 기대를 충족하는지 확인할 수 있습니다. https://developer.mozilla.org/en-US/docs/Web/Events/blur –
@AndrewLohr 아니요, 각각 잃을 때마다 아무런 표시가 없기 때문에 작동하지 않습니다 – can
일부 HTML을 추가하고 코드를 스 니펫에 넣습니다. [< >]에서 jsfiddle을 선택하면 도움이 될 것입니다. –