Окружите текстовые поля формой и поверните следующий, назад и отмените в кнопки отправки. В случае события onsubmit назначьте метод, который возвращает true, если форма верна, и должен продолжить отправку ее на сервер, в противном случае - false.
Так что я бы ожидал что-то вроде:
<form id="navigatorForm">
<!-- Various text forms here -->
<input type="submit" value="Back" onsubmit="back()" />
<input type="submit" value="Next" onsubmit="next()" />
<input type="submit" value="Cancel" onsubmit="cancel()" />
<input type="hidden" id="operation" name="operation" value="" />
</form>
<script type="text/javascript">
function validate() {
// Perform validation here
// If okay, return true, else false
}
function next() {
document.getElementById('operation').value = 'next';
if(!validate()) {
alert('Form is not filed correctly. Please pay more attention!');
return false; // Do not send to server!
} else {
return true;
}
}
function back() {
document.getElementById('operation').value = 'back';
return true;
}
function cancel() {
document.getElementById('operation').value = 'cancel';
return true;
}
</script>
Обратите внимание, что в отличие от next (), back () и cancel () безоговорочно возвращают true, что означает, что запрос отправляется на сервер при любых обстоятельствах. На этом этапе на стороне сервера вам нужно будет только проверить, находится ли следующая операция, чтобы узнать, следует ли вам проводить дальнейшее тестирование.