사용자의 Re-Click을 방지하기 위해서 "클릭 했으니깐 기다려주세요!" 라는 메세지를 전달하기 위해서는 loading button이 짱이다.
간단하게 loading button을 만드는 css를 적어보자 한다.
참조 사이트 : https://loading.io/button/
1. loading.css와 loading-btn.css를 다운한다.
2. 버튼을 만든다(클릭 시 버튼 옆에 loading 이미지 생성)
<button id="search">검색
<span class="ld ld-ring ld-spin-fast"></span>
</button>
3. 버튼 옆에 loading 버튼이 돌아가는것을 확인 후 jquery로 토글한다
class Main {
constructor() {
this.setSubmitEvent();
this.loadingButton = '<span class="ld ld-ring ld-spin-fast"></span>'; // loading 버튼
this.button = $('#search');
}
setButtonDisable = () => {
this.button.append(this.loadingButton); // loading 버튼 확성화
this.button.attr('disabled', true); // 재 클릭 방지를 위한 button disable
};
setButtonEnable= () => {
$('#search span').remove();
this.button.attr('disabled', false);
};
setSubmitEvent(){
$("#search-form").submit((e) => {
e.preventDefault();
let form = $("#search-form");
$.ajax({
url: '/',
data: form.serialize(),
type: 'post',
dataType: 'json',
beforeSend: ()=> {
this.setButtonDisable();
},
}).done((data)=>{
this.setButtonEnable();
$("#result-table tbody").html(data.html_ranking_list);
}).fail(function (xhr, textStatus) {
alert('실패');
});
return false;
});
}
}
결론 : loading 버튼은 필요하지만 매번 만들기 귀찮다 복붙을 잘하자.
'JS' 카테고리의 다른 글
javascript es6 + Promise IE11 간단히 지원 (1) | 2021.06.11 |
---|---|
javascript 비동기 재귀 함수 (0) | 2020.09.28 |
Promise 자바스크립트(js) (0) | 2019.10.18 |
js 화살표함수(arrow function) (0) | 2019.10.14 |
JS prototype(프로토타입) (0) | 2019.09.25 |