반응형
event.preventDefault를 다시 활성화하는 방법?
모든 제출 단추에서 기본 작업을 방지한 웹 페이지가 있지만 단추에서 기본 제출 작업을 다시 활성화하려면 어떻게 해야 합니까?
현재 다음을 사용하여 기본 작업을 방지하고 있습니다.
$("form").bind("submit", function(e){
e.preventDefault();
});
다음을 사용하여 이 작업을 성공적으로 수행했습니다.
$(document).ready(function(){
$("form:not('#press')").bind("submit", function(e){
e.preventDefault();
});
그런데 버튼을 클릭하면 동적으로 할 수 있는 건가요?
이벤트를 바인딩 해제하고 Default를 방지하지 않는 별도의 이벤트로 바인딩하거나 바인딩 해제 후 메서드에서 기본 이벤트를 직접 호출해야 합니다.마법 같은 이벤트는 없습니다. cancelled= false;
요청하신 대로
$('form').submit( function(ev){
ev.preventDefault();
//later you decide you want to submit
$(this).unbind('submit').submit()
});
이 코드로 빨간색 사각형이 제안하는 것을 수행하는 경우:
function preventDefault(e) {
e.preventDefault();
}
$("form").bind("submit", preventDefault);
// later, now switching back
$("form#foo").unbind("submit", preventDefault);
또는 제출이 허용될 때마다 양식 속성을 할당합니다.이와 같은 것:
function preventDefault(e) {
if (event.currentTarget.allowDefault) {
return;
}
e.preventDefault();
}
$("form").bind("submit", preventDefault);
// later, now allowing submissions on the form
$("form#foo").get(0).allowDefault = true;
function(e){ e.preventDefault();
그리고 그 반대.
function(e){ return true; }
건배!
$('form').submit( function(e){
e.preventDefault();
//later you decide you want to submit
$(this).trigger('submit'); or $(this).trigger('anyEvent');
비동기 액션(timer, ajax)을 사용하면 속성을 재정의할 수 있습니다.isDefaultPrevented
다음과 같이:
$('a').click(function(evt){
e.preventDefault();
// in async handler (ajax/timer) do these actions:
setTimeout(function(){
// override prevented flag to prevent jquery from discarding event
evt.isDefaultPrevented = function(){ return false; }
// retrigger with the exactly same event data
$(this).trigger(evt);
}, 1000);
}
이것은 정확히 동일한 데이터로 이벤트를 다시 트리거하는 가장 완벽한 방법입니다.
저도 최근에 비슷한 문제가 있었습니다.폼과 PHP 기능을 가지고 있었는데 폼이 제출되면 실행됩니다.하지만 자바스크립트를 먼저 실행해야 했습니다.
// This variable is used in order to determine if we already did our js fun
var window.alreadyClicked = "NO"
$("form:not('#press')").bind("submit", function(e){
// Check if we already run js part
if(window.alreadyClicked == "NO"){
// Prevent page refresh
e.preventDefault();
// Change variable value so next time we submit the form the js wont run
window.alreadyClicked = "YES"
// Here is your actual js you need to run before doing the php part
xxxxxxxxxx
// Submit the form again but since we changed the value of our variable js wont be run and page can reload (and php can do whatever you told it to)
$("form:not('#press')").submit()
}
});
다음을 추가하여 작업을 다시 활성화할 수 있습니다.
this.delegateEvents(); // Re-activates the events for all the buttons
backbone js 뷰의 렌더 기능에 추가하면 필요에 따라 event.preventDefault()를 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/1164132/how-to-reenable-event-preventdefault
반응형
'programing' 카테고리의 다른 글
자바스크립트를 이용한 I프레임 클릭 탐지 (0) | 2023.10.04 |
---|---|
SQL에서 처음 발생하는 이벤트 찾기 (0) | 2023.10.04 |
Excel 2013의 스프레드시트 비교 스크립트를 작성하는 방법은 무엇입니까? (0) | 2023.10.04 |
도커 복사 및 소유자 변경 (0) | 2023.10.04 |
Android studio 오류 "지원되지 않는 모듈이 탐지됨:다음 모듈에 대해서는 컴파일이 지원되지 않습니다." (0) | 2023.10.04 |