2016-11-22 9 views
0

web2py보기 (tmp.load)가있는 경우 양식을 강제로 제출하여 on submit 처리기에서 false을 반환 할 수 있습니다.Web2py : LOAD 된 구성 요소 내에서 양식 제출을 취소하는 방법

<form onsubmit="return false;"><input type="text"><input type="submit" /></form> 

직접 볼 때 작동합니다.이 양식은 제출하지 않습니다. 하지만이 뷰를로드 할 경우

{{=LOAD('tmp.load', ajax=True)}} 

그런 다음 양식을 제출합니다. 그렇다면 특정 js 조건이 충족 될 경우 제출하지 않도록 프로그래밍 할 수있는 양식이 포함 된 LOAD 구성 요소를 작성하려면 어떻게해야합니까?

답변

1

web2py.js는 Ajax를 통해 양식을 제출하기 위해 양식의 이벤트 핸들러를 자동으로 설정합니다. 한 가지 가능한 접근법은 ajax:beforeSend 이벤트 핸들러를 설정하여 web2py의 Ajax 제출을 차단하는 것입니다. 예를 들어, 구성 요소 (즉, tmp.load)의 관점에서, 뭔가 같은 : 위에서

<script> 
$(document).on('ajax:beforeSend', function(e, xhr, settings) { 
    if (settings.type === 'POST') { 
    if(abortAjaxSubmission) { 
     xhr.abort(); 
     $.web2py.enableFormElements($('form#myform')); 
    } 
    } 
}); 
</script> 

, abortAjaxSubmission는 제출을 중지 할 조건을 나타냅니다. 선택자 form#myform은 구성 요소의 양식을 나타냅니다 (양식 요소를 다시 사용 가능하게해야합니다. 왜냐하면 web2py는 제출시 해당 양식을 비활성화하지만 Ajax 요청이 완료되면 다시 활성화하기 때문에 중단하는 경우에는 발생하지 않습니다).