명심해야 할 것이 몇 가지 있습니다.
1. 양식을 제출하는 방법에는 여러 가지가 있습니다
- 제출 버튼 사용
- Enter를 눌러
- JavaScript에서 제출 이벤트를 트리거하여
- 장치 또는 향후 장치에 따라 더 많을 수 있습니다.
따라서 버튼 클릭 이벤트가 아닌 양식 제출 이벤트에 바인딩해야합니다 . 이를 통해 현재와 미래의 모든 장치 및 보조 기술에서 코드가 작동합니다.
2. 히잡
사용자가 JavaScript를 활성화하지 않았을 수 있습니다. hijax의 패턴은 우리가 부드럽게 자바 스크립트를 사용하여 양식의 컨트롤을하지만, 자바 스크립트가 실패하는 경우가 submittable 떠날 경우, 여기 좋다.
양식에서 URL과 메소드를 가져와야하므로 HTML이 변경되면 JavaScript를 업데이트 할 필요가 없습니다.
3. 눈에 띄지 않는 JavaScript
사용 에서는 event.preventDefault () 대신 반환 거짓은 그것이 거품까지 이벤트를 허용하는 것이 좋습니다. 이를 통해 다른 스크립트 (예 : 사용자 상호 작용을 모니터링하는 분석 스크립트)를 이벤트에 연결할 수 있습니다.
속도
스크립트를 인라인으로 삽입하는 대신 외부 스크립트를 사용하는 것이 이상적입니다. 스크립트 태그를 사용하여 페이지의 헤드 섹션에 링크하거나 페이지 하단의 링크를 통해 속도를 높일 수 있습니다. 스크립트는 방해받지 않고 사용자 경험을 조용히 향상시켜야합니다.
암호
위의 모든 내용에 동의하고 제출 이벤트를 잡고 AJAX (hijax 패턴)를 통해 처리하려는 경우 다음과 같이 할 수 있습니다.
$(function() {
$('form.my_form').submit(function(event) {
event.preventDefault(); // Prevent the form from submitting via the browser
var form = $(this);
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: form.serialize()
}).done(function(data) {
// Optionally alert the user of success here...
}).fail(function(data) {
// Optionally alert the user of an error here...
});
});
});
다음을 사용하여 JavaScript를 통해 원할 때마다 양식 제출을 수동으로 트리거 할 수 있습니다.
$(function() {
$('form.my_form').trigger('submit');
});
편집하다:
나는 최근에 이것을해야했고 플러그인을 작성하게되었습니다.
(function($) {
$.fn.autosubmit = function() {
this.submit(function(event) {
event.preventDefault();
var form = $(this);
$.ajax({
type: form.attr('method'),
url: form.attr('action'),
data: form.serialize()
}).done(function(data) {
// Optionally alert the user of success here...
}).fail(function(data) {
// Optionally alert the user of an error here...
});
});
return this;
}
})(jQuery)
data-autosubmit 속성을 양식 태그에 추가하면 다음을 수행 할 수 있습니다.
HTML
<form action="/blah" method="post" data-autosubmit>
<!-- Form goes here -->
</form>
JS
$(function() {
$('form[data-autosubmit]').autosubmit();
});