フォームに入力した後、項目の作成を確認するためにポップアップする Jquery UI ダイアログがあります。フォームのさまざまなニーズにより、特にページをリロードせずにフォームで検証を行う必要があるため、更新パネルにフォームがあります。
JavaScript が非同期ポストバックでリロードされないように見えます。これは、フォームが成功し、変数「formSubmitPass」を true に変更すると、<%= formSubmitPass %> を介して Javascript に渡されないことを意味します。送信ボタンにトリガーを追加して完全なポストバックを実行すると、機能します。ただし、送信ボタンで完全なポストバックを実行したくないので、更新パネル内でフォームを検証できます。
フォームが非同期で検証されるようにするにはどうすればよいですか?ただし、フォームが正常に完了し、アイテムがデータベースに保存されると、javaScript は適切にリロードされますか?
Javascript:
var formSubmitPass = '<%= formSubmitPass %>';
var redirectUrl = '<%= redirectUrl %>';
function pageLoad() {
$('#formPassBox').dialog({
autoOpen: false,
width: 400,
resizable: false,
modal: true,
draggable: false,
buttons: {
"Ok": function() {
window.location.href = redirectUrl;
}
},
open: function(event, ui) {
$(".ui-dialog-titlebar-close").hide();
var t = window.setTimeout("goToUrl()", 5000);
}
});
if(formSubmitPass == 'True')
{
$('#formPassBox').dialog({
autoOpen: true
});
}
では、コード ビハインドからポストバックを強制したり、非同期ポストバックで JavaScript をリロードしたり、非同期フォーム検証を継続できるようにするにはどうすればよいでしょうか?
編集: コードビハインドの最後で formSubmitPass を変更します:
If errorCount = 0 Then
formSubmitPass = True
upForm.Update()
Else
formSubmitPass = False
End If
したがって、完全なポストバックでは、値が変更されます。