2016-11-22 1 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経由でフォームを送信するためにコンポーネントのフォーム用のイベントハンドラを自動的にセットアップします。可能なアプローチの1つは、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は送信時に無効にするためフォーム要素を再度有効にする必要がありますが、終了した場合は発生しません)。

関連する問題