Nice programing

event.preventDefault를 다시 활성화하는 방법은 무엇입니까?

nicepro 2020. 11. 4. 08:24
반응형

event.preventDefault를 다시 활성화하는 방법은 무엇입니까?


모든 제출 버튼에 대한 기본 작업을 금지 한 웹 페이지가 있지만 버튼에 대한 기본 제출 작업을 다시 활성화하고 싶습니다. 어떻게해야합니까?

현재 다음을 사용하여 기본 작업을 방지하고 있습니다.

$("form").bind("submit", function(e){
e.preventDefault();
});

다음을 사용하여 성공적으로 수행했습니다.

$(document).ready(function(){
$("form:not('#press')").bind("submit", function(e){
e.preventDefault();
});

하지만 버튼을 클릭하면 동적으로 할 수 있습니까?


이벤트 바인딩을 해제하고 preventDefault가 아닌 별도의 이벤트로 리 바인드하거나 바인딩 해제 후 나중에 메서드에서 기본 이벤트를 직접 호출해야합니다. 마법 같은 이벤트는 없습니다 .cancelled = false;

요청대로

 $('form').submit( function(ev){

         ev.preventDefault();

         //later you decide you want to submit
         $(this).unbind('submit').submit()

  });

이 코드로 redsquare가 제안하는 것을 수행하십시오.

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');

With async actions (timers, ajax) you can override the property isDefaultPrevented like this:

$('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);
}

This is most complete way of retriggering the event with the exactly same data.


You can re-activate the actions by adding

this.delegateEvents();  // Re-activates the events for all the buttons

If you add it to the render function of a backbone js view, then you can use event.preventDefault() as required.

참고URL : https://stackoverflow.com/questions/1164132/how-to-reenable-event-preventdefault

반응형