2016-09-28 2 views
1

У меня есть форма Ajax в моем приложении. Я хочу передать событие функции OnBegin, а затем использовать event.preventdefault(), который остановит форму отправки, а затем при проверке некоторых условий. Я пытаюсь отправить форму вручную. Но это не и я не могу понять, почему.Можно ли передать событие функции OnBegin формы 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"/> 
} 

функция OnBegin:

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

ответ

0

Моя быть я нашел лучшее решение ....

$('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(), который остановит форму от представления

Вы также можете использовать return false; остановить форму от представления, он в основном делает эффект event.preventdefault(). Проверить this.

Ниже скрипт должен работать для вас:

function OnBeginForm() { 

    if (some condition) { 
     return false; 
    } 

} 

Надежда помогает :)

Reference

+1

Мы не можем вызвать отправке. Это приведет к бесконечному циклу, вместо этого нам придется вручную отправить форму, используя 'on ('submit')'. В любом случае спасибо и +1 с моей стороны. –

+0

@JibinBalachandran, вы столкнулись с бесконечным циклом во время отладки? – stom

+1

Это создает бесконечный цикл, потому что '$ ('Ajax_form'). Trigger ('submit');' запускает событие отправки, которое в свою очередь вызывает 'OnBeginForm()', которое запускает событие отправки, которое вызывает 'OnBeginForm()', которое запускает ..... –

Смежные вопросы