HTML 양식은 사용자 데이터 전송을 처리하는 웹 애플리케이션의 기본입니다. 수많은 리소스가 태그와 검증을 양식하는 수많은 리소스가 있지만 양식 데이터에서 변경을 감지하는 것은 종종 간과됩니다. 이 기사는이 중요한 작업에 대한 효율적인 방법을 탐구합니다. 키 테이크 아웃 : 형태 데이터 변경 감지는 사용자 경험과 응용 프로그램 효율성을 향상시킵니다. 사용자가 탐색 할 때 경고는 구원받지 않은 데이터 손실을 방지 할 수 있습니다. 반대로, no 감지 변경은 서버 측 처리를 최적화합니다 이벤트 핸들러는 겉보기에는 적합하지만 제한 사항이 있습니다. 원래 값, JavaScript 수정 값으로 되돌아 가거나 동적 형태 요소를 효과적으로 처리하는 변경 사항을 감지하지 않습니다. 브라우저 불일치는 그 사용을 더욱 복잡하게 만듭니다 우수한 접근 방식은 기본값을 현재 값과 비교하는 것입니다. 그러나 기본값 속성은 폼 요소 유형에 따라 다릅니다 양식 업데이트를 감지하는 이유는 무엇입니까? 형태 변경 감지는 몇 가지 개선 사항을 가능하게합니다 데이터 손실 방지 : 페이지를 떠나기 전에 구원받지 않은 변경 사항에 대해 사용자에게 경고하여 저장 옵션을 제공 할 수 있습니다 (예 : Ajax를 통해). 서버로드 최적화 : 변경 사항이 없을 때 불필요한 서버 측 유효성 검사 및 데이터 저장을 피하십시오. onchange 의 한계 javaScript 이벤트 핸들러에는 몇 가지 단점이 있습니다 반전 된 변경 사항 : 사용자가 값을 수정 한 다음 값을 수정 한 다음 되돌려 보면 는 여전히 변경 사항을 등록합니다. JavaScript 수정 : JavaScript를 통해 프로그래밍 방식으로 변경된 변경 . 큰 형태의 오버 헤드 : 큰 형태의 수많은 요소에 를 첨부하는 브라우저 성능에 영향을 미칩니다. 동적 형태 : 형태 요소 추가 또는 제거 이벤트 처리기를 동적으로 관리해야합니다. 브라우저 불일치 : 모든 브라우저에서 확인란 및 라디오 버튼에 대한 동작이 일관되지 않습니다. 보다 강력한 접근 : 기본값 비교 각 양식 요소는 초기 상태를 반영하는 기본값 속성을 가지고 있습니다. 이 기본값을 현재 값과 비교하면 변경 사항이 확실하게 감지됩니다. 그러나 특정 속성은 다음과 같습니다. 텍스트 입력 및 텍스트 웨이즈 : 이 요소는 속성을 사용합니다. 간단한 비교로 충분합니다 : 이것은 표준 및 HTML5 입력 유형 (이메일, 전화, URL 등)에 대해 작동합니다. 확인란 및 라디오 버튼 : 이들은 속성 (부울)을 사용합니다 defaultChecked 참고 : var name = document.getElementById("name"); if (name.value !== name.defaultValue) alert("#name has changed");로그인 후 복사는 존재하지만 확인 된 상태가 아닌 속성을 반영합니다. 선택 상자 (드롭 다운) : defaultValue 선택 상자는 옵션 요소의 value 속성을 검사해야합니다. 이것은 속성이있는 단일 선택 선택 상자에 대해 작동합니다. 속성없이 다중 선택 상자 및 시나리오를 처리하는 것은 각 옵션에 대해 및 를 비교하기 위해보다 정교한 루핑 논리가 필요합니다. 재사용 가능한 솔루션 (곧 출시 될 예정입니다!) defaultSelected 위의 방법은 효과적이지만 브라우저에서 모든 양식 유형을 처리하는 일반적이고 재사용 가능한 JavaScript 기능이 매우 바람직합니다. 향후 기사가이를 다룰 것입니다. var optin = document.getElementById("optin"); if (optin.checked !== optin.defaultChecked) alert("#optin has changed");로그인 후 복사 자주 묻는 질문 (faqs) FAQS 섹션은 JavaScript, JQuery, Server-Side 언어 사용, 구축되지 않은 변경 사항으로 탐색을 방지하며 특정 폼 요소 유형을 처리하는 등 HTML 양식 변경을 감지하는 다양한 측면을 다룹니다. (원래 FAQ는 간결하게 생략되지만 포함 된 정보는 위에 요약되어 있습니다).