Редактировать: Чтобы уточнить, это внутри загрузочного модального кода, а кнопка находится в нижнем колонтитуле формы. Я не могу отправить нормальную форму, потому что мне нужно будет изменить расположение кнопки отправки, чтобы быть внутри формы, и я не хочу этого делать - она должна оставаться внутри нижнего колонтитула.Подтвердить форму перед отправкой ajax submit
Я пытаюсь проверить, чтобы заполненные поля были заполнены перед отправкой формы через ajax, но все ответы, которые я встретил, говорят, что я должен использовать плагин jquery .validate(), и я не знаю, t хотите использовать любые дополнительные плагины. Возможно ли это сделать?
HTML:
<form id="event-form">
<div class='row'>
<div class="form-group col-xs-12">
<label class="form-label" for="event[title]">Event Name</label>
<div>
<input type="text" name="event[title]" class="form-control" value="" required />
</div>
</div>
</div>
<div class="row" id="day-start">
<div class="form-group col-xs-6">
<label class="form-label" for="event[all_day]">All day event?</label>
<div>
<select class='form-control' name='event[all_day]' id='all_day' required>
<option value='0' selected>No</option>
<option value='1'>Yes</option>
</select>
</div>
</div>
<div class="form-group col-xs-3">
<label class="form-label" for="event[start_date]">Start</label>
<div>
<input type="text" name="event[start_date]" class="dateclicker form-control" value="" placeholder='Date' required />
</div>
</div>
<div class="form-group col-xs-3 partial-day">
<label class="form-label" for="event[start_time]"> </label>
<div>
<input type="text" name="event[start_time]" class="timeclicker form-control" value="" placeholder="Time" required/>
</div>
</div>
</div>
<div class='row' id="day-end">
<div class="form-group col-xs-6"></div>
<div class="form-group col-xs-3 partial-day">
<label class="form-label" for="event[end_date]">End</label>
<div>
<input type="text" name="event[end_date]" class="dateclicker form-control" value="" placeholder='Date' required />
</div>
</div>
<div class="form-group col-xs-3 partial-day">
<label class="form-label" for="event[end_time]"> </label>
<div>
<input type="text" name="event[end_time]" class="timeclicker form-control" value="" placeholder='Time' required />
</div>
</div>
</div>
<label class="form-label" for="event[color]">Pick a color</label>
<input type="hidden" value="" id="color-field" name="event[color]" required/>
<div class='row' id='colors'>
<!--Colors populate here via js-->
</div>
<hr />
<div class='row' id="notify-me">
<div class="form-group col-xs-6">
<label class="form-label" for="event[notify_bool]">Would you like to set an email notification for this event?</label>
<div>
<select class='form-control' name='event[notify_bool]' id="notify-bool">
<option value='1' selected>Yes</option>
<option value='0'>No</option>
</select>
</div>
</div>
<div class="form-group col-xs-5" id="notify-hours">
<label class="form-label" for="event[notify_hours]">Notify me this many hours before the event</label>
<div>
<input type="number" name="event[notify_hours]" class="form-control tickler-time" value="" min="0" placeholder='Hours'/>
</div>
</div>
</div>
<hr />
<div class='row'>
<div class="form-group col-xs-12">
<label class="form-label" for="event[notes]">Add a note for this event</label>
<div>
<textarea name="event[notes]" id="notes"></textarea>
</div>
</div>
</div>
</form>
Javascript:
$('#submit-form').click(function(){
$.post('notifications/add_event',
$('#event-form').serialize(),
function(data, status, xhr){
data = $.parseJSON(data);
calendar.fullCalendar('renderEvent',
{
title: data.title,
start: data.start,
end: data.end
},
true
);
$('#eventModal').modal('hide');
});
});
Я не использовал плагин проверки jQuery, но я подозреваю, что все, что он делает, это получить каждое поле ввода и проверить его значение в соответствии с определенным вами правилом плагин. Вы можете сделать то же самое, перейдя по всем полям ввода и для каждой проверки значения. – blm