2012-04-12 10 views
0

私は元々$(form).submit()のために働いていた機能を持っています。メインビューには既にform.sumbit()関数があるので、$("#savebutton").click()で動作するように修正する必要がありました。唯一の問題は、ボタンがクリックされ、状態が有効なときにフォームが送信を停止したことです。 古いコードJqueryは機能しません

$(document).ready(function() { 
    $("form").submit(function (e) { 
     e.preventDefault(); //prevent default form submit 
     $.ajax({ 
      url: '@Url.Action("HasJobInProgress", "ClientChoices")/', 
      data: { id: '@Model.ClientId' }, 
      success: function (data) { 
       showMsg(data); 
      }, 
      cache: false 
     }); 
    }); 
}); 

function showMsg(hasCurrentJob) { 
    if (hasCurrentJob == "True") { 
     alert("The current clients has a job in progress. No changes can be saved until current job completes"); 
     return false; 
    } else { 
     $("form").unbind('submit').submit(); 
    } 
} 

CurrentCode

$(document).ready(function() { 

    $("#saveButton").click(function (e) { 
     e.preventDefault(); //prevent default form submit 
     $.ajax({ 
      url: '@Url.Action("HasJobInProgress", "Shared")/', 
      data: { id: '@Model.ClientId' }, 
      success: function (data) { 
       showMsg(data); 
      }, 
      cache: false 
     }); 
    }); 

    function showMsg(hasCurrentJob) { 
     if (hasCurrentJob == "True") { 
      alert("The current clients has a job in progress. No changes can be saved until current job completes"); 
      return false; 
     } else { 
      $("form").submit(); 
     } 
     return true; 
    } 
}); 

アップデート(まだ動作していない)

$(document).ready(function() { 

    $("#saveButton").click(function (e) { 
     if ($(e.currentTarget).data('shouldSubmit')) return; 
     e.preventDefault(); //prevent default form submit 
     $.ajax({ 
      url: '@Url.Action("HasJobInProgress", "Shared")/', 
      data: { id: '@Model.ClientId' }, 
      success: function (data) { 
       showMsg(data, e); 
      }, 
      cache: false 
     }); 
    }); 

    function showMsg(hasCurrentJob, e) { 
     if (hasCurrentJob == "True") { 
      alert("The current clients has a job in progress. No changes can be saved until current job completes"); 
      return false; 
     } else { 
      $(e.currentTarget).data('shouldSubmit', true); 
      $("#saveButton").click(); 
      $(e.currentTarget).data('shouldSubmit', null); 
     } 
     return true; 
    } 
}); 

答えて

1

This answerは働くかもしれない技術を使用しています。基本的に同じボタンを再度プログラムでクリックし、フラグを使用して確認方法(あなたの場合はshowMsg)内でクリックされているかどうかを判断します。

+0

私はそれに続いて難しいですが、試行しました。上記に投稿します。もし何かが見えたら教えてください。 –

+0

@atbyrd、私はあなたの更新されたバージョンで何か明らかな間違いはありません。私はあなたがデバッガでそれをステップアップすることをお勧めします。 – Joe

関連する問題