2012-04-12 12 views
0

Ich habe eine Funktion, die ursprünglich für $(form).submit() arbeitete. Ich musste es ändern, um auf $("#savebutton").click() zu arbeiten, weil es eine form.sumbit() - Funktion in der Hauptansicht bereits gibt. Das einzige Problem ist, dass das Formular nicht mehr gesendet werden konnte, wenn auf die Schaltfläche geklickt wurde und der Status gültig war. Alter CodeJquery Senden keine Arbeit

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

Update (noch nicht funktioniert)

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

Antwort

1

This answer verwendet eine Technik, die funktionieren könnte. Klicken Sie grundsätzlich erneut auf den gleichen Knopf und verwenden Sie eine Markierung, um festzustellen, ob innerhalb der Bestätigungsmethode (showMsg in Ihrem Fall) geklickt wird.

+0

Ich habe eine harte Folge, die aber Versuch machte. Wird oben posten. Bitte lassen Sie mich wissen, wenn Sie etwas sehen. –

+0

@atbyrd, ich sehe nichts offensichtliches falsch mit Ihrer aktualisierten Version. Ich schlage vor, Sie versuchen, es mit einem Debugger zu durchlaufen. – Joe

Verwandte Themen