2016-09-28 1 views
1

J'ai un formulaire Ajax dans mon application.Je veux passer l'événement à OnBegin fonction, puis utiliser event.preventdefault() qui va arrêter le formulaire de soumettre, puis en vérifiant certaines conditions que je suis en train de soumettre le formulaire manuellement.Mais ce n'est pas travailler et je ne suis pas capable de comprendre pourquoi.Est-il possible de passer un événement à une fonction OnBegin d'un formulaire Ajax?

Ajax.BeginFrom:

@using (Ajax.BeginForm("Update", "Project", false, new AjaxOptions { InsertionMode = InsertionMode.Replace, 
                     HttpMethod = "Post", 
                     OnBegin = "return OnBeginForm(event);", 
                     OnSuccess = "OnSuccessArtwork(data);", 
                     OnFailure = "OnFailureArtwork(data);" }, 
                     new { id = "Ajax_form" })) 
{ 
    // Here I have all the form elements // 
    <input type="submit" id="btnUpdate" class="btn02 pull-left" value="Update"/> 
} 

fonction OnBegin:

function OnBeginForm(e) { 
    e.preventDefault(); 
    if(some condition){ 
    $('#Ajax_form').submit(); 
    } 
    else{ 
    return false; 
    } 
} 

Répondre

0

mon être je l'ai trouvé une meilleure solution ....

$('input[type=submit]').on('click', function (e) { 
     e.preventDefault(); 
     var buttonid = $(this).attr('id'); 
     if (buttonid == "btnUpdate") { 
      //Do what ever you want it fires before Ajax Submit 
      //Finaly ajax submit manually trigger submit event 
      $(this).trigger('submit'); 
     } 


    }); 
1

Event.preventDefault() qui arrêtera la forme de soumettre

Vous pouvez également utiliser return false; arrêter la forme de la soumission, il fait essentiellement l'effet de event.preventdefault(). Vérifiez this.

Ci-dessous le script devrait fonctionner pour vous:

function OnBeginForm() { 

    if (some condition) { 
     return false; 
    } 

} 

espoir aide :)

Reference

+1

Nous ne pouvons pas déclencher le soumettre. Il en résultera une boucle infinie à la place nous devrons soumettre manuellement le formulaire en utilisant 'on ('submit')'. En tout cas merci et +1 de mon côté. –

+0

@JibinBalachandran, es-tu tombé sur une boucle infinie pendant le débogage? – stom

+1

Cela crée une boucle infinie parce que $ ('Ajax_form'). Trigger ('submit'); 'déclenche l'événement submit qui à son tour appelle' OnBeginForm() 'qui déclenche l'événement submit qui appelle' OnBeginForm() 'qui déclenche ..... –