Основная информацияjquery validation - есть ли более эффективный способ сделать это?
У меня есть таблица, где каждая строка представляет контактную информацию. Нет необходимости иметь контактные данные, но если пользователь указывает внутренний номер, они должны указывать данные для каждого поля.
проблема
код у меня есть до сих пор, чтобы проверить для большинства полей работает .. но у меня есть набор флажков, представляющих день в неделю. Необходимо выбрать хотя бы один день. Код прямо сейчас не удается ... даже если у меня есть один флажок, я все равно получаю сообщение об ошибке.
Также мне интересно, есть ли способ упростить мой оператор IF, который проверяет статус флажка. Код очень многословный ... и уродливый.
HTML
<table class="table table-bordered table-hover tcdata">
<tbody><tr><td colspan="6"><h3>Time Conditions</h3></td></tr>
<tr><td colspan="6">Default Rule:</td></tr>
<tr id="time_conditions">
<td><input class="form-control starttc tcdata" type="input" placeholder="UTC Start Time (format 00:00:00)" name="starttime" id="starttime"></td>
<td><input class="form-control tcdata" type="input" placeholder="UTC End Time (format 00:00:00)" name="endtime" id="endtime"></td>
<td><input class="form-control tcdata" type="input" placeholder="Extension" name="extension" id="extension"></td>
<td><input class="form-control tcdata" type="input" placeholder="Domain" name="domain" id="domain"></td>
<td>
<label class="checkbox-inline"><b>Days of Week:</b></label>
<input class="checkbox-inline tcdata" type="checkbox" name="dow_m">Mon
<input class="checkbox-inline tcdata" type="checkbox" name="dow_t">Tue
<input class="checkbox-inline tcdata" type="checkbox" name="dow_w">Wed
<input class="checkbox-inline tcdata" type="checkbox" name="dow_r">Thu
<input class="checkbox-inline tcdata" type="checkbox" name="dow_f">Fri
<input class="checkbox-inline tcdata" type="checkbox" name="dow_s">Sat
<input class="checkbox-inline tcdata" type="checkbox" name="dow_t">Sun
</td>
<td><button id="addtc" type="button" class="btn btn-success btn-circle"><i class="fa fa-plus"></i></button></td>
</tr>
<tr class="showAdditionalRulesLabel" style=""><td colspan="6">Addtional Rules:</td></tr>
<tr>
<td><input class="form-control starttc tcdata" type="input" placeholder="UTC Start Time (format 00:00:00)" name="starttime2"></td>
<td><input class="form-control tcdata" type="input" placeholder="UTC End Time (format 00:00:00)" name="endtime2"></td>
<td><input class="form-control tcdata" type="input" placeholder="Extension" name="extension2"></td>
<td><input class="form-control tcdata" type="input" placeholder="Domain" name="domain2"></td>
<td colspan="2"><label class="checkbox-inline"><b>Days of Week:</b></label><input class="checkbox-inline tcdata" type="checkbox" name="dow_m2">Mon <input class="checkbox-inline tcdata" type="checkbox" name="dow_t2">Tue <input class="checkbox-inline tcdata" type="checkbox" name="dow_w2">Wed <input class="checkbox-inline tcdata" type="checkbox" name="dow_r2">Thu <input class="checkbox-inline tcdata" type="checkbox" name="dow_f2">Fri <input class="checkbox-inline tcdata" type="checkbox" name="dow_s2">Sat <input class="checkbox-inline tcdata" type="checkbox" name="dow_n2">Sun
</td></tr>
<tr id="submitbtnsection"><td colspan="6"><input type="submit" name="submit" id="submit" class="btn btn-primary" value="Assign"></td></tr>
</tbody>
</table>
И вот Javascript (частично), который вызывается при попытке отправить форму:
$('.tcdata tr').each(function (i, row) {
var $row = $(row);
var $ext = $row.find('input[name*="extension"]');
if ($ext.val()) {
//extension data has been defined.. make sure you have start time/end time
var $start = $row.find('input[name*="starttime"]');
var $end = $row.find('input[name*="endtime"]');
var $domain = $row.find('input[name*="domain"]');
if (!$start.val() || !$end.val() || !$domain.val()) {
$(".btn-warning").html("Whoops! Every time condition must have a start/end time, and a domain");
e.preventDefault();
return;
}
//check days of week.
var $dow_m = $row.find('input[name*="dow_m"]');
var $dow_t = $row.find('input[name*="dow_t"]');
var $dow_w = $row.find('input[name*="dow_w"]');
var $dow_r = $row.find('input[name*="dow_r"]');
var $dow_f = $row.find('input[name*="dow_f"]');
var $dow_s = $row.find('input[name*="dow_s"]');
var $dow_s = $row.find('input[name*="dow_n"]');
if ((!$("#dow_m").is(':checked')) && (!$("#dow_t").is(':checked')) && (!$("#dow_w").is(':checked')) && (!$("#dow_r").is(':checked')) && (!$("#dow_f").is(':checked')) && (!$("#dow_s").is(':checked')) && (!$("#dow_n").is(':checked'))) {
//nothing selected
$(".btn-warning").html("Whoops! Every time condition must have a day of week assign to it");
e.preventDefault();
return;
}
}
});
Еще один комментарий - в случае, если это помогает ... Вы заметите, что для каждой строки в моей таблице имена полей идентичны, за исключением того, что число в конце увеличивается. Так, например:
name="dow_w"
name="dow_w2"
эти строки генерируются динамически JQuery ... но я не думаю, что это отношение, так что я не включил код. Код html, который вы видите выше, является RENDERED html ... так что это довольно точно.
Любая помощь в определении того, где моя ошибка будет оценена.
я понял одну часть из. Ни одна из контрольных знаков не имела идентификатора. только имя. теперь, когда я изменил его, он работает. Глупая ошибка. Но если это способ упростить код, пожалуйста, дайте мне знать – Happydevdays