У меня есть некоторые HTML и JavaScript, подобные этим:
<html>
<head>
<title>Validation Test</title>
<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.min.js"></script>
</head>
<body>
<form id="myform">
<input id="TotalHours" type="text" value="24"/> is the total number of hours!
<input id="day" class="input" type="text"/> is the number of hours of daylight!
<input id="night" class="input" type="text"/> is the number of hours of darkness!
<script>
validationRules = {
TotalHours: {
TotalHoursMatch: true
}
};
$.validator.addMethod("TotalHoursMatch", function(value, element) {
// find total hours
var reportedTotalHours = parseFloat($("#TotalHours").text());
var totalHours = 0;
$('input.input').each(function(i, sel) {
var hours = $(sel).find(":selected").text();
var f = parseFloat(hours);
if (f != 0 && !Number.isNaN(f))
totalHours += f;
});
// validate that hours are within a quarter hour of each other
var difference = Math.abs(totalHours - reportedTotalHours);
return difference < 0.25;
}, "Total of hours for daylight and darkness must match total hours in a day.");
function doSubmit()
{
$('form').validate({rules: validationRules});
if (!$('form').valid())
alert('bad!');
else
alert('ok');
}
</script>
<button onclick="doSubmit();">submit</button>
</form>
</body>
</html>
Теперь по какой-то причине, когда я go проверяю форму, пользовательский метод проверки никогда не вызывается, даже если Я думаю, что настроил это правильно. Таким образом, «ОК» всегда отображается; проверка никогда не завершается неудачей, потому что метод, который выполняет проверку, не вызывается. Почему это? Что мне здесь не хватает, чтобы подключить проверку?