Привязка к событию change
Input
для времени начала (проверьте его идентификатор в отображаемом HTML):
$("input#TheId").bind("onchange", onStartTimeChanged);
Определение функции для анализа времени, см. в этом посте здесь, на SO.
В функции onStartTimeChanged
получите состояние флажка (обновите с помощью правильного селектора jQuery для элемента управления):
var checked = $('input[type=checkbox]').is(':checked');
Затем просто добавьте проанализированную датус правильным смещением и запишите его обратно в элемент управления End Time, используя toLocaleTimeString()
.
Примечание: Я предполагал, что вы будете использовать JavaScript для выполнения вычислений на стороне клиента.Если вы предпочитаете делать все на стороне сервера, вам нужно добавить в контроллер метод с поддержкой AJAX с указанием времени запуска и флажка в качестве параметров.В вашей функции onStartTimeChanged
вы должны вызывать ее и асинхронно обновлять время окончания при возврате функции.Если есть много логики (или это не тривиально), я предпочитаю серверное решение с AJAX.
Например (я не проверял код, поэтому использую его cum grano salis), чтобы вызвать сервер-метод side с POST (вы должны передать параметры, в качестве альтернативы вы можете использовать getJson только с GET, но вам нужно работать с маршрутизацией):
function ComputeEndTime(matchStartTime, isSimpleMatch) {
var url = '<%= Url.Action("ControllerName", "ComputeEndTime") %>';
$.post(url, { startTime: matchStartTime, isSimple: isSimpleMatch },
function(data) {
return data.endTime;
}
);
}
И ваша функция на стороне сервера:
[AcceptPost]
public ActionResult ComputeEndTime(string startTime, bool isSimple)
{
// Perform your calculations then convert to string
string calculatedEndTime = "";
return Json(new { endTime = calculatedEndTime });
}