2012-05-18 7 views
1

У меня есть работа над локальной настройкой (с jquery.1.6.4), но она не работает над установкой dev (jquery.1.3.2).У вас возникли проблемы с отправкой формы и вызовами в очереди событий после асинхронного события

Рассмотрим следующую форму -

<form onsubmit="return validateMacros();"> 
    <input id="formsubmitbutton" type="submit" name="formsubmitbutton" value="Submit" /> 
</form> 

validateMacros(); Обратите внимание на вызов выше.

А следующий Javascript -

jQuery(document).ready(function() 
{ 

$("input#formsubmitbutton").click(preValidateUrls); 

     function preValidateUrls(evt) 
     { 
       evt.preventDefault(); //to prevent form submission until completion of async event 

       $.ajax({ 
        ... 
        ... 
        success: function(res) 
        { 
         $("form#frmBanners").submit(); //This submits the form in case of both versions but in 1.3.2 case, the validateMacros() function is not called 
        } 
       }); 
     } 

}); 

function validateMacros() 
{ 
    //some logic here - which is not executing in case of jquery.1.3.2 
} 

Когда jquery.1.6.4 загружен, функция validateMacros() выполняется после завершения исполнения preValidateUrls(), которое желательно.

Но когда загружается jquery.1.3.2, validateMacros() не выполняется вообще и форма просто отправляется.

Как заставить его работать с обеими версиями. Что я делаю не так?

ответ

1

Идите ненавязчиво!

$('form#frmBanners').on('submit', validateMacros); 

Что мы делаем здесь подписавшись функция в submit случае формы, после того, как вы даете ему идентификатор (я только заметил, что вы использовали frmBanners в качестве примера). Unobstrusive означает, что вы не помещаете Javascript в свой HTML, который является основной целью библиотек, таких как jQuery. Итак, где угодно в вашем внешнем файле Javascript, включите строку, указанную выше. В любое время, когда форма отправлена ​​ и не только при нажатии кнопки отправки функция будет вызываться.

Итак, когда вы вызываете $("form#frmBanners").submit();, событие вызывается и вызывается функция. Это шаг ближе к следующему соглашению в том, что касается таких событий.

+0

Кроме того, почему вы загрузили более старую версию jQuery? Просто загрузите последнюю версию. –

+0

не могли бы вы рассказать о своем ответе. И мы сейчас не в состоянии обновить до 1.3.2 на производстве, поэтому нужно заставить его работать :( –

+0

@SandeepanNath Проверить мое редактирование –

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

  • Нет связанных вопросов^_^