Лучше реализовать условие проверки, которое устанавливает флажок, и сделать основные флажки доступными только для чтения.
$(function() {
// Make the main checkboxes readonly.
$('[name="menu[]"]').click(false);
$('[name="menu[]"] + ul input').click(function() {
$(this).closest("ul").prev("input").prop("checked", ($(this).closest("ul").find("input:checked").length > 0));
});
$(document).on('submit', '#form', function(e) {
e.preventDefault();
if ($("[name='menu[]']:checked").length == 0) {
alert('Missing menu');
return false;
} else {
alert('Success');
}
});
});
ul li {
list-style: none;
float: left;
}
ul li ul li {
float: none;
}
.col100 {
width: 100%;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="form">
<ul>
<li><input type="checkbox" name="menu[]" value="2" />Vehicle
<ul>
<li><input type="checkbox" name="submenu[2][1]">Bike</li>
<li><input type="checkbox" name="submenu[2][2]">Car</li>
<li><input type="checkbox" name="submenu[2][3]">Cycle</li>
</ul>
</li>
<li><input type="checkbox" name="menu[]" value="12" />Sport
<ul>
<li><input type="checkbox" name="submenu[12][1]">Basketball</li>
<li><input type="checkbox" name="submenu[12][2]">Volleyball</li>
<li><input type="checkbox" name="submenu[12][3]">Football</li>
</ul>
</li>
</ul>
<input type="submit" name="submit" value="submit" class="col100">
</form>
Таким образом, вы не можете отправить форму без правильной установки флажков.