2015-09-16 1 views
1

Я по-прежнему новичок, когда дело доходит до MVC, Ajax и JavaScript. У меня есть приложение, в котором я должен внести изменения. Прямо сейчас, когда внесение изменений и сохранение, показания счетчика отображаются при сохранении информации и загрузке страницы. Код Сохранить выглядит следующим образом:Остановить кнопку обработки страницы на кнопке в диалоговом окне

$('#SaveButton').on('click', function() { 
    navParams.isDirty = false; 
}); 

HTML выглядит следующим образом:

<input type="submit" value="Save" class="btn btn-block btn-primary user-action" name="action:Save" id="SaveButton" /> 

Только примечание есть несколько кнопок на экране, поэтому он использует решение «Multiple Button» из How do you handle multiple submit buttons in ASP.NET MVC Framework?

следующий код был добавлен:

$('#SaveButton').on('click', function() { 
    navParams.isDirty = false; 
    displaySavePromptMessage(); 
}); 
function displaySavePromptMessage() { 
    if (isModalOpen == false) { 
     bootbox.dialog({ 
      closeButton: false, 
      title: "", 
      message: "<strong>Warning: </strong>Changes have been made, ensure corresponding dates have been updated on the screen", 
      buttons: { 
       success: { 
        label: "Ok", 
        callback: function() { 
         navParams.userAction = false; 
        } 
       } 
      } 

     }); 
    } 
} 

Теперь что происходит нажатие кнопки сохранения, запускает счетчик, загружается диалоговое окно, но перед нажатием кнопки ОК кнопка диалога закрывается, а счетчик останавливается. Изменения сохранены. Что должно произойти, так это запуск счетчика, диалоговое окно загружается и все остается, пока пользователь не наберет ОК. Затем обработка продолжается. Я не знаю, как это сделать. Есть предположения?

+0

Где код, который сохраняет все? Из того, что я вижу, это должно быть в «обратном вызове». – tcooc

ответ

2

Базовая концепция. Вы должны слушать submit события и предотвратить его:

$('.some-form').on('submit', function(submitEvent) { 
    submitEvent.preventDefault(); 
}); 

Тогда в обработчике, вам необходимо отправить форму на успех:

// Inside your success handler 
$('.some-form').get(0).submit(); 
0

У вас есть вход type="submit", который будет представлять форму, когда это нажата кнопка. Либо изменить это type="button" или @Lesha Огоньков сказал

$('#yourFormID').on('submit', function (e) { 
e.preventDefault();//it will stop loading page on form submission 
}); 

асинхронность внутри вас успех функции обработчика

$('.myFromID').get(0).submit(); 
+0

Спасибо за ответы! Я попытался изменить тип на кнопку, и он не открывал диалоговое окно, пока я не нажал кнопку ОК. Однако данные не были сохранены. – rsford31

+0

Для другой опции, мой идентификатор формы - InputForm. Я бы добавил $ ('# yourFormID'). On ('submit', function (e) { e.preventDefault(), в дополнение к $ ('# SaveButton'). On ('click', function () { navParams.isDirty = false; displaySavePromptMessage(); }); – rsford31